2014-12-02 22 views
2

我想創建一個類充滿HTML輔助方法:標記所有方法爲「安全」

class FormHelper { 
    public function text() { 
     return 'hello <b>world</b>'; 
    } 
} 

其中我註冊成爲一個全球性的:

$twig->addGlobal('fh',new FormHelper); 

然後我可以調用從方法樹枝:

{{ fh.text }} 

但他們總是逃脫(如hello &lt;b&gt;world&lt;/b&gt;)。

我知道我可以防止與|raw轉義,但我想繞過這一點,就像designate a function as safe一樣。

這是可能的類方法?

回答

1

枝條全局只是一個存儲,你可以把任何變量,將在上下文中可用。沒有邏輯應用,就像這些變量存儲在本地上下文中一樣。

但你可以遍歷類的方法,並把它們註冊爲安全功能:

$object = new FormHelper(); 
foreach (get_class_methods($object) as $method) 
{ 
    $function = new Twig_SimpleFunction("fh_{$method}", array($object, $method), array('is_safe' => array('html'))); 
    $twig->addFunction($function); 
} 

注意,你不能使用函數名點(.),所以你需要調用:

{{ fh_test() }} 
相關問題