尝试获取非对象错误的属性,但在刷新页面时有效

时间:2016-12-19 13:24:07

标签: php laravel laravel-5

我有时会在标题中看到错误,但是当我刷新几次时,我的应用程序再次运行。

Laravel.log显示了这个:

  

[2016-12-19 13:17:22] local.ERROR:异常'ErrorException'用   消息'试图在

中获取非对象的属性'      

存储\框架\视图\ e81b4a67320194ba9a4782ec91b02d51:12

storage / framework / views / e81b4a67320194ba9a4782ec91b02d51.php第12行:

<span class="block m-t-xs">
    <strong class="font-bold"><?php echo e(Auth::user()->name); ?></strong> <!--line 12-->
</span>

4 个答案:

答案 0 :(得分:4)

在尝试访问用户对象中的字段之前,请先执行Auth::check()Auth::user()。这是因为您试图获取用户对象的属性,但用户对象为null。像这样

<span class="block m-t-xs">
    @if(Auth::check())
    <strong class="font-bold">
        {{ Auth::user()->name }}
    </strong>
    @endif
</span>

答案 1 :(得分:0)

由于某种原因Auth::check()返回false,但应用没有注销。清除cookie并再次登录后,此错误停止发生。

我怀疑问题是我改变了用户并认证了很多但没有清除cookie

答案 2 :(得分:0)

您应该使用auth()->check()检查会话是否包含经过身份验证的用户:

<span class="block m-t-xs">
    <strong class="font-bold">
        <?php echo (auth()->check()) ? e(Auth::user()->name) : ''; ?>
    </strong>
</span>
  

您可以使用三元运算符来检查用户是否已通过身份验证。

希望这有帮助!

答案 3 :(得分:-1)

为什么要尝试使用e()?尝试dd(Auth::user())然后查看结果或尝试

{{ Auth::user()->name }}