在非对象上调用成员函数isATeamManager()

时间:2015-09-25 16:42:18

标签: php laravel-5.1

我收到此错误

  

"在非对象"上调用成员函数isATeamManager()。

(RedirectIfNotAManager.php)

<?php

namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Closure;


class RedirectIfNotAManager
{


    public function handle($request, Closure $next)
    {
        if(!$request->user()->isATeamManager())
        {

            return redirect('articles');

        }

        return $next($request);
    }
}

我用Google搜索并没有得到任何解决方案,因为我是laravel的新手,请帮助我解决这个问题。在laravel 5.1中。我尝试了其他示例,但仍然遇到此错误..

(这是User.php模型代码:)

<?php

namespace App;


class User extends Model implements AuthenticatableContract,
                                    AuthorizableContract,
                                    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword;

     protected $table = 'users';


    protected $fillable = ['name', 'email', 'password'];


    protected $hidden = ['password', 'remember_token'];


    public function articles()

    {


        return $this->hasMany('App\Article');
    }

    public function isATeamManager()
    {

        return false;
    }
}

2 个答案:

答案 0 :(得分:1)

这意味着您的请求没有存储用户。因此,没有人登录或您的会话无法正常工作。 $request->user()是一个运行以尝试拉当前用户的函数,默认情况下,如果有人登录,它将返回用户对象或我认为的空值。所以很可能你会得到一个空值。您可以将if语句更改为:

if(!$request->user() || !$request->user()->isATeamManager()) {

答案 1 :(得分:0)

我得到了解决方案..

这是有效的!!
公共函数句柄($ request,Closure $ next)     {         if($ request-&gt; user()){//如果用户未登录,则返回null,结果为false

       if (!$request->user()->isATeamManager()) {

            return redirect('articles');
        }
    }

    return $next($request);
}

}