Laravel 5:如何获取中间件中的参数列表
问题描述:
如何在中间件中检索route
参数的列表,尝试了多种方法,但始终以错误或空结果结尾:
How can I retrive list of route
parameters in Middleware, tried multiple ways but always end with Error or empty result:
public function handle($request, Closure $next)
{
$request->route()->parameter('page'); //Call to a member function parameter() on null
$request->route()->parameters(); //Call to a member function parameters() on null
Request::capture()->getParameter('page'); //Call to undefined method Illuminate\Http\Request::getParameter()
Route::getCurrentRoute()->getParameter('page'); //Call to a member function getParameter() on null
Route::getCurrentRoute()->getParameters(); //Call to a member function getParameters() on null
Route::getParameter('page'); //Method getParameter does not exist.
}
有没有一种方法可以获取中间件中的参数列表? 谢谢,
Is there a way to get list of parameters in Middleware? thanks,
更新:(添加路线)
Route::get('test/{page}', array('uses'=>'test@test'));
Laravel版本:5.1.20
Laravel version: 5.1.20
答
您之所以获得NULL
值,是因为您将中间件定义为在解析路由之前运行的全局和全局中间件.
You are getting NULL
value because you defined your middleware as global and global middleware run before the route is resolved.
如果需要访问路由参数,请在App\Http\Kernel::$routeMiddleware
中将中间件用作路由中间件:
If you need access to route parameters, use your middleware as route middleware in App\Http\Kernel::$routeMiddleware
:
protected $routeMiddleware = [
'my.middleware' => [
\App\Http\Middleware\MyMiddleware::class,
],
];