如果没有登录,Laravel会在用户上调用方法

时间:2016-11-24 10:37:18

标签: laravel laravel-5

我的用户模型中有一个方法是:

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语句中包装速记,但感觉很麻烦。有没有更好的方法来处理这个?

2 个答案:

答案 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的解决方案绝对更清晰。