4

我想做这样的事情:

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

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

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

它奏效了。我只是想知道,为什么我不能使用更短的?我误解了什么吗?提前致谢。

4

2 回答 2

4

抱歉这么久才回来:-)

事实是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标签将编译一些控制输出缓冲区的代码。

于 2013-04-20T15:42:42.487 回答
4

要对一段代码应用过滤器,您必须用过滤器标签包装它:

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

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

{{ variable name|filter }}

要阅读更多内容,请在此处查看有关过滤器的 twig 文档

于 2013-04-22T16:48:51.467 回答