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

Lov*_*ock 0 laravel laravel-5

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

public function hasRole($roles)
{
    foreach ($roles as $role) {
        if ($role === $this->role_id) {
            return true;
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

我通过检查此方法返回我的应用程序正文添加一个类:

<div id="spark-app" v-cloak class="{{ ( Auth::user()->hasRole([1]) ? 'customer' : '' ) }}">
Run Code Online (Sandbox Code Playgroud)

这是正确的,但如果没有登录用户我当然会收到错误.

Call to a member function hasRole() on null
Run Code Online (Sandbox Code Playgroud)

有没有办法仍然使用这个简写语句,以及检查是否有用户?

我可以用inline if语句包装速记,但感觉很麻烦.有没有更好的方法来处理这个?

Ant*_*neB 6

Laravel提供了一种检查用户是否已登录的方法,即Auth::check()(参见文档).

<div id="spark-app" v-cloak class="{{ ( Auth::check() && Auth::user()->hasRole([1]) ? 'customer' : '' ) }}">
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的解决方案,如果可能,请包含文档链接:https://laravel.com/docs/5.3/authentication (2认同)