Laravel 5:如何获取中间件中的参数列表 [英] Laravel 5: How to get list of Parameters in Middleware

查看:399
本文介绍了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维护人员拒绝了更改此行为的建议.

这篇关于Laravel 5:如何获取中间件中的参数列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆