2014-12-02 23 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() }} 
相关问题