我对Twig很新。我有一个名为Session
的类和一个名为get
的静态函数我想返回Session::get('user_name')
的内容。甚至可以不修改任何东西吗?
我尝试了{{ constant('Namespace\\Session::get("user_name")') }}
和{{ Session.get('user_name') }}
,但似乎没有效果。
答案 0 :(得分:1)
我找到了答案。我只是在new Twig_Enviroment($twig_loader)
$twig = new Twig_Environment($twig_loader);
$twig->addFunction('_call', new Twig_Function_Function(
function($class, $function, $arguments = array())
{
return call_user_func(array($class, $function), $arguments);
})
);
在Twig
{{ _call('Session', 'get', 'user_name')|raw }}
答案 1 :(得分:1)
你可以像下面这样使用Twig Extension:
class CustomExtension extends \Twig_Extension {
public function getFunctions() {
return array(
new \Twig_SimpleFunction('static_call', array($this, 'staticCall')),
);
}
function staticCall($class, $function, $args = array()) {
if (class_exists($class) && method_exists($class, $function)) {
return call_user_func_array(array($class, $function), $args);
}
return null;
}
}
在树枝中使用:
{{ static_call('AppBundle\\Entity\\YourEntity', 'GetSomething', ['var1', 'var2']) }}