2012-05-22 72 views
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) }} 

回答

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 
} 

此操作後,您就可以在枝杈打電話:

{{ apply_filter(object, 'filterName') }} 

乾杯;)

+0

你可以添加applyFilter實現嗎? – vishal

相關問題