Laravel 5 控制器构造函数Laravel 5.5中的请求

Laravel 5 控制器构造函数Laravel 5.5中的请求,laravel-5,constructor,controller,request,middleware,Laravel 5,Constructor,Controller,Request,Middleware,我真的很绝望。 我正在将一个laravel项目从5.2迁移到5.5,一切都将变得完美。但我在控制器构造函数中使用请求对象时遇到问题。如果我使用请求对象,控制器似乎会跳过中间件。 我尝试使用$this->middleware('api');但不起作用 public function __construct(Request $req) { $this->commerce = new Commerce($req->user->currency()->currency);

我真的很绝望。 我正在将一个laravel项目从5.2迁移到5.5,一切都将变得完美。但我在控制器构造函数中使用请求对象时遇到问题。如果我使用请求对象,控制器似乎会跳过中间件。 我尝试使用$this->middleware('api');但不起作用

public function __construct(Request $req) {
    $this->commerce = new Commerce($req->user->currency()->currency);
}
我的“api”中间件在请求中推送用户对象。 在构造方法$req->用户为空

api路由设置正确,其他控制器正常工作


我忘记了什么?

您可以在
$this->middleware()方法的回调函数中使用controller中的Request对象。试试这个:

public function __construct(){
  $this->middleware(function($req, $next){
    $this->commerce = new Commerce($req->user->currency()->currency);

    return $next($req);
  });
}

您可以在
$this->middleware()
方法的回调函数中使用controller中的Request对象。试试这个:

public function __construct(){
  $this->middleware(function($req, $next){
    $this->commerce = new Commerce($req->user->currency()->currency);

    return $next($req);
  });
}

我尝试了相同的方法,但使用中间件代码。。。不行!您的
返回$next($request)
不应该是
返回$next($req)
?我尝试了相同的方法,但使用了中间件代码。。。不行!您的
返回$next($request)
是否应该
返回$next($req)