Laravel和Twig Bridge打印Auth对象

时间:2016-04-14 21:13:38

标签: php twig laravel-5.2

我使用的是Laravel基本身份验证,但我真的很难在视图中使用Auth对象。

使用Blade有很好的例子,但是我使用的是Twig(twig bridge)并且无法解决这个问题。

我可以在常规php的控制器中vardump(Auth::user()->name)但是如何在twig文件(我的视图文件)中获得相同的内容?

我该如何做;

{% if auth.guest %}

或者

{{ Auth.user().name }}

我尝试了很多不同的方法但却什么都没得到。

1 个答案:

答案 0 :(得分:0)

这与twig的工作方式有关,如果不向Twig环境添加函数,就无法访​​问类上的静态变量/类或静态方法。

您可以注册这样的功能:

$twig = new Twig_Environment($loader);
$twig->addFunction('staticCall', new Twig_Function_Function('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;
}

然后我认为你应该可以做到:

{% if staticCall('Auth', 'guest') %}
    Hi there stranger, why don't you <a href="/login">login</a>?
{% endif %}

我从这个答案中获取了代码:twig template engine, using a static function or variable