将变量传递到包含模板名称中具有变量的twig模板中

时间:2013-04-12 23:08:02

标签: symfony twig

是否可以将变量传递到包含的树枝模板中,模板名称本身就是变量?

{% include('MyMainBundle:MyEntity:' ~ entity.templateName) %}

有效,但当我尝试将变量传递到此模板时,twig会引发语法错误。

{% include('MyMainBundle:MyEntity:' ~ entity.templateName, {'name' : myName} ) %}

2 个答案:

答案 0 :(得分:40)

我明白我做错了什么。我结合了两个不同版本的include,一个使用{{和另一个使用{%,因为symfony和twig文档显示了包含模板的不同方式。这就像从我的初始代码中删除括号并在定义参数之前插入with一样简单。

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

添加这样的模板
{{ include('AcmeArticleBundle:Article:articleDetails.html.twig', {'article': article}) }}

或者像http://twig.sensiolabs.org/doc/tags/include.html

这样
{% include 'template.html' with {'foo': 'bar'} %}

答案 1 :(得分:5)

对于模板名称作为变量,我必须使用以下格式:

{% include 'AcmeCalendarBundle:Default:cal_event_' ~ day.item.type ~ '.html.twig' with {'item': day.item} %}

使用

{{ include 'AcmeCalendarBundle:Default:cal_event_' ~ day.item.type ~ '.html.twig', {'item': day.item} }}

没用。