树枝变量中的树枝扩展过滤器或函数名称不起作用?

时间:2013-12-12 12:41:29

标签: php symfony twig

{{ row[col.key] | col.filter }}

我在col.filter变量中有过滤器。我尝试创建了以下链接https://github.com/fabpot/Twig-extensions/pull/53/files中提到的eval过滤器,并尝试https://github.com/marcj/twig-apply_filter-bundle或调用

{{ row[col.key] | eval(col.filter) }}

{{ eval(row[col.key] , col.filter) }}

但它不起作用。

问题的演示就在这里,

https://github.com/vishalmelmatti/twig_dynamic_filter

4 个答案:

答案 0 :(得分:1)

此时您无法执行此操作,但我建议您创建自己的twig方法或过滤器,以获取要作为参数应用的过滤器。

我建议你使用或从这个包中获取灵感:https://github.com/marcj/twig-apply_filter-bundle

答案 1 :(得分:1)

好的,这有点毛茸茸,但是如何使用template_from_string + include方法呢?有点难看,而且可能相当昂贵,但至少它应该有用。

概念证明:

{% set col, row = { key: 'x', filter: 'raw' }, { x: '<b>one</b>', y: '<b>two</b>' } %}
{{ include(template_from_string('{{ row[col.key]|' ~ col.filter ~ ' }}')) }}

...将输出:一个

虽然这......

{% set col, row = { key: 'x', filter: 'escape' }, { x: '<b>one</b>', y: '<b>two</b>' } %}
...

...将输出:&lt; b&gt;一个&lt; / b&gt;

答案 2 :(得分:0)

正如IRC所述,您可以采用另一种方法,并使用Format界面将格式应用于您的元素:

这里有一个简单的POC https://gist.github.com/Lumbendil/d94109e91ceab7fae7e7

答案 3 :(得分:0)

以下是解决方案:

https://github.com/marcj/twig-apply_filter-bundle

这是一个Symfony软件包,可以提供您所需要的内容。你也可以在没有symfony的情况下使用它。