Laravel和Twig Bridge打印身份验证对象


Laravel and Twig Bridge printing Auth object

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

使用Blade有很好的例子,但我使用的是Twig(树枝桥(,无法解决这个问题。

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

我该怎么做这样的事情;

{% if auth.guest %}

或;

{{ Auth.user().name }}

我尝试了很多不同的方法,但一无所获。

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

您可以像这样注册一个函数:

$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 模板引擎,使用静态函数或变量