Symfony 2中的模板部分

时间:2012-12-30 04:26:44

标签: templates symfony twig partials

Symfony 2中是否有部分内​​容,可以从任何地方有效地使用可重复使用的模板?

我找到include http://twig.sensiolabs.org/doc/tags/include.html但这只允许在特定目录结构中呈现模板。

我真的想要一个包含所有部分模板的文件夹,而不是将它们放到我的主视图中?

所以我希望能够做类似

的事情
{% include "Bundle:Default:Partials:view.html.twig" %}

更新

我不想使用Bundle:Controller:Template结构的强制结构。我不想使用它,因为它意味着将我的所有模板部分放入我的主视图模板中。我需要能让我做Bundle:Controller:PartialDir:Template

的事情

4 个答案:

答案 0 :(得分:9)

你已经可以做到了。 symfony2文档有一节描述如何执行此操作。

http://symfony.com/doc/current/book/templating.html#including-other-templates

答案 1 :(得分:2)

在Symfony 2.4(我目前正在使用的版本,但也可能适用于其他2.x版本)中,您可以执行以下操作:

{% include '::_partials/partial.html.twig' %}

或使用include函数

在Symfony 2.2+中
{{ include('::_partials/partial.html.twig') }}

这将在app / Resources / views / _partials目录中查找partial.html.twig模板。显然,您可以根据需要为_partials目录命名。它也可以没有'::'前缀。

答案 2 :(得分:0)

我知道这是旧的,但实现OP要求的方法如下:
而不是做 bundle:controler:partialDir:template
我们必须稍微切换才能实现:
{% include 'Bundle:PartialDir/Controller:Template' %}

答案 3 :(得分:0)

要包含控制器,您需要使用控制器的标准字符串语法来引用它(即bundle:controller:action):

{{ render(controller(
    'App\\Controller\\ArticleController::recentArticles',
    { 'max': 3 }
)) }}