【问题标题】:Twig filter included template树枝过滤器包括模板
【发布时间】:2013-04-20 15:33:59
【问题描述】:

我想做这样的事情:

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

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

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

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

【问题讨论】:

  • 您找到了更短的方法吗?还是使用{% filter %} 仍然是最好的方法?

标签: php twig template-engine


【解决方案1】:

抱歉这么久才回来:-)

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

【讨论】:

  • 不,我想对整个输出应用降价过滤器。或者这听起来很愚蠢?无论如何,我想说,那不是逃避,而是任何过滤器。
【解决方案2】:

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

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

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

{{ variable name|filter }}

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

【讨论】:

  • {{ }} 采用表达式,不一定是变量。在OP的情况下,过滤的函数调用是表达式,这里没有错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
相关资源
最近更新 更多