在Twig中调用静态函数

时间:2014-09-02 17:48:59

标签: twig

我对Twig很新。我有一个名为Session的类和一个名为get的静态函数我想返回Session::get('user_name')的内容。甚至可以不修改任何东西吗?

我尝试了{{ constant('Namespace\\Session::get("user_name")') }}{{ Session.get('user_name') }},但似乎没有效果。

2 个答案:

答案 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']) }}