1

这更像是一个讨论问题:

假设你的包中有一个组件,它由一个服务组成,可能是一个模型和模板,并且你想提供一种简单的方法将它包含在你的主模板中。

您可以提供一个树枝扩展,它在内部使用帮助器来呈现模板,例如:

{{ acme_render_component({foo: 'bar'}) }}

或者您会决定让主模板使用嵌入式控制器,例如:

{{ render(controller('AcmeBundle:CoolComponent:render', { 'foo': bar })) }}

我猜这些案例的表现有所不同:
使用 twig 扩展,您可能会首先使用该服务来填充模型并在模板中再次获取它。
使用控制器,您可能会按需执行服务。

有什么区别、优势或注意事项?
您应该何时提供其中一个或另一个,或两者都提供?

4

1 回答 1

1

我想使用自定义 Twig 扩展的一个原因是性能。在 Twig 模板中调用“render”是一个全新的请求,它会贯穿整个 Symfony 生命周期。

于 2013-08-22T09:26:53.053 回答