我想创建一个充满HTML帮助方法的类:
class FormHelper {
public function text() {
return 'hello <b>world</b>';
}
}
我注册为全球:
$twig->addGlobal('fh',new FormHelper);
然后我可以从Twig调用方法:
{{ fh.text }}
但他们总是被转义(例如hello <b>world</b>
)。
我知道我可以使用|raw
阻止转义,但我想绕过这一点,就像designate a function as safe一样。
类方法可以吗?
答案 0 :(得分:1)
Twig Globals只是一个存储空间,您可以在其中放置将在上下文中可用的任何变量。没有应用逻辑,就像这些变量存储在本地上下文中一样。
但是你可以迭代你的类的方法并将它们注册为安全函数:
$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() }}