Twig过滤器包含模板

时间:2013-04-20 15:33:59

标签: php twig template-engine

我想做这样的事情:

{{ include("tpl.html")|f }}

但这似乎不起作用,它只打印tpl.html而没有任何过滤,然后我尝试了:

{% filter f %}
    {% include "tpl.html" %}
{% endfilter %}

它有效。我只是想知道,为什么我不能使用较短的一个?我误解了什么吗? 提前谢谢。

2 个答案:

答案 0 :(得分:4)

要对代码段应用过滤器,必须使用过滤器标记包装它:

{% filter f %}
    ...
{% endfilter %}

您最初尝试的是过滤一个由双括号定义的变量:

{{ variable name|filter }}

阅读更多信息,请查看过滤器here

上的twig文档

答案 1 :(得分:3)

很抱歉回来很久: - )

事实是include函数在模板上写入。

如果你这样做:

{% set s = include('FuzHomeBundle:Default:test.html.twig') %}

不应该显示某些内容,无论如何都会获得文件输出的内容,s变量将设置为null

如果你改为:

{% filter upper %}
{% include 'FuzHomeBundle:Default:test.html.twig' %}
{% endfilter %}

{% filter upper %}
{{ include('FuzHomeBundle:Default:test.html.twig' }}
{% endfilter %}

filter标记将编译一些控制输出缓冲区的代码。