Laravel布局页获取当前登录用户报错问题求助
解决Laravel布局页未登录时访问
Auth::user()->name报错的问题 这个问题我之前也碰到过,本质是未登录状态下Auth::user()返回的是null,直接访问->name自然会抛出"Trying to get property 'name' of non-object"错误——毕竟你的layout.blade.php不管用户有没有登录都会被加载,退出登录后再访问登录页面时,布局页里的这段代码就会触发错误。
给你几个实用的解决办法:
方法1:先判断用户是否登录再输出名称
用Auth::check()(或者辅助函数auth()->check())先验证用户是否已登录,只有登录状态才输出用户名,未登录时可以显示登录入口或其他提示:
@if(Auth::check()) {{ Auth::user()->name }} @else <a href="{{ route('login') }}">登录</a> @endif
方法2:使用可选链操作符(简洁版,需PHP 8+、Laravel 8+)
如果你的项目满足PHP 8及以上、Laravel 8及以上的版本要求,可以用PHP的可选链操作符?->,当Auth::user()为null时,会直接返回null而不触发错误:
{{ Auth::user()?->name }}
这种写法非常简洁,适合不需要显示未登录提示的场景。
方法3:使用auth()辅助函数的写法
和方法1逻辑一致,只是用更简洁的auth()辅助函数替代Auth门面:
@if(auth()->check()) {{ auth()->user()->name }} @else <span>请登录</span> @endif
选其中一种方法替换你原来的{{Auth::user()->name}}代码,就能解决退出后再登录时的报错问题了。
内容的提问来源于stack exchange,提问作者Prathamesh Jaisingpure
相关产品推荐
相关产品推荐

