这更像是一个讨论问题:
假设你的包中有一个组件,它由一个服务组成,可能是一个模型和模板,并且你想提供一种简单的方法将它包含在你的主模板中。
您可以提供一个树枝扩展,它在内部使用帮助器来呈现模板,例如:
{{ acme_render_component({foo: 'bar'}) }}
或者您会决定让主模板使用嵌入式控制器,例如:
{{ render(controller('AcmeBundle:CoolComponent:render', { 'foo': bar })) }}
我猜这些案例的表现有所不同:
使用 twig 扩展,您可能会首先使用该服务来填充模型并在模板中再次获取它。
使用控制器,您可能会按需执行服务。
有什么区别、优势或注意事项?
您应该何时提供其中一个或另一个,或两者都提供?