基本上,我正在寻找对象和数组的attribute()
函数的过滤器等价物。我希望能够应用一个过滤器,其名称存储在一个变量中。
{#
This works and is really useful
prints object.someVar
#}
{% set varName = 'someVar' %}
{{ attribute(object,varName) }}
{#
The function "filter" does not exist
#}
{% set filterName = 'somefilter' %}
{{ filter(object,filterName) }}
答案 0 :(得分:1)
要实现此目标,您必须扩展TwigFilter。
如何最初为您编写扩展程序,您可以阅读here。
假设您已经创建了扩展程序,那么您已经定义了函数,假设applyFilter
。
//YourTwigFilterExtension.php
public function getFunctions()
{
return array(
...
'apply_filter' => new \Twig_Function_Method($this, 'applyFilter'),
);
}
然后,你必须定义这个功能
public function applyFilter($context, $filterName)
{
// handle parameters here, by calling the
// appropriate filter and pass $context there
}
在这种操作之后,您将能够在Twig中调用:
{{ apply_filter(object, 'filterName') }}
干杯;)