Laravel 5:如何获取中间件中的参数列表

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,
     ],
];

出于架构方面的考虑,Laravel维护人员拒绝了更改此行为的建议.