闭包对象不能在 Laravel 中间件中具有属性
Closure object cannot have properties in Laravel middleware
我想在我的控制器的构造函数中有一个中间件来过滤非 AJAX 请求:
public function __construct()
{
parent::__construct();
// Return 404 if not AJAX request
$this->middleware(function ($request, $next) {
if (!$request->ajax()) {
return abort(404);
}
return $next;
}, ['only' => ['list', 'publish', 'unpublish', 'delete']]);
}
控制器中有一个方法:
public function list(Request $request)
{
die('OK');
}
当我发出 AJAX 请求时,我得到了异常:“闭包对象不能有属性”。
如果我注释掉中间件,一切正常。
你的return说法是错误的,你必须return$next($request);
而不是return $next;
我会亲自将您的代码更改为:
use Illuminate\Http\Response;
public function __construct()
{
parent::__construct();
// Return 404 if not AJAX request
$this->middleware(function ($request, $next) {
if (! $request->ajax()) {
abort(Response::HTTP_NOT_FOUND);
}
return $next($request);
})->only(['list', 'publish', 'unpublish', 'delete']);
}
我想在我的控制器的构造函数中有一个中间件来过滤非 AJAX 请求:
public function __construct()
{
parent::__construct();
// Return 404 if not AJAX request
$this->middleware(function ($request, $next) {
if (!$request->ajax()) {
return abort(404);
}
return $next;
}, ['only' => ['list', 'publish', 'unpublish', 'delete']]);
}
控制器中有一个方法:
public function list(Request $request)
{
die('OK');
}
当我发出 AJAX 请求时,我得到了异常:“闭包对象不能有属性”。 如果我注释掉中间件,一切正常。
你的return说法是错误的,你必须return$next($request);
而不是return $next;
我会亲自将您的代码更改为:
use Illuminate\Http\Response;
public function __construct()
{
parent::__construct();
// Return 404 if not AJAX request
$this->middleware(function ($request, $next) {
if (! $request->ajax()) {
abort(Response::HTTP_NOT_FOUND);
}
return $next($request);
})->only(['list', 'publish', 'unpublish', 'delete']);
}