我使用的是Laravel基本身份验证,但我真的很难在视图中使用Auth对象。
使用Blade有很好的例子,但是我使用的是Twig(twig bridge)并且无法解决这个问题。
我可以在常规php的控制器中vardump(Auth::user()->name)
但是如何在twig文件(我的视图文件)中获得相同的内容?
我该如何做;
{% if auth.guest %}
或者
{{ Auth.user().name }}
我尝试了很多不同的方法但却什么都没得到。
答案 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