3

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) }} 
4

1 に答える 1

1

この目標を達成するには、TwigFilterを拡張する必要があります。

最初に拡張機能を作成する方法は、ここで読むことができます。

拡張機能を作成したとすると、関数を定義したとしましょう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') }} 

乾杯 ;)

于 2012-08-01T15:03:23.963 に答える