我的用户模型中有一个方法是:
public function hasRole($roles)
{
foreach ($roles as $role) {
if ($role === $this->role_id) {
return true;
}
}
return false;
}
我通过检查此方法返回我的应用程序正文中添加了一个类:
<div id="spark-app" v-cloak class="{{ ( Auth::user()->hasRole([1]) ? 'customer' : '' ) }}">
这是正确的,但如果没有登录用户,我当然会收到错误。
Call to a member function hasRole() on null
有没有办法继续使用这个简写语句并检查是否有用户?
我可以在内联if语句中包装速记,但感觉很麻烦。有没有更好的方法来处理这个?
答案 0 :(得分:6)
Laravel提供了一种检查用户是否已登录的方法,Auth::check()
(见documentation)。
<div id="spark-app" v-cloak class="{{ ( Auth::check() && Auth::user()->hasRole([1]) ? 'customer' : '' ) }}">
答案 1 :(得分:1)
试试这个:
<div id="spark-app" v-cloak class="{{ ( null !== Auth::user() && Auth::user()->hasRole([1]) ? 'customer' : '' ) }}">
编辑:@ AntoineB的解决方案绝对更清晰。