【问题标题】:get request params in middleware handle在中间件句柄中获取请求参数
【发布时间】:2015-07-24 08:21:15
【问题描述】:

我正在处理HTTP Middleware manual。并创建了一个中间件“LogAll”并将其添加到Kernel.php 中的$middleware 数组中。

一切正常,除了我在 LogAllhandle 方法中没有请求参数(post 或 get)

public function handle($request, Closure $next)
{
    var_dump($request->all());
    return $next($request);
}

它打印一个空数组。调用匹配该路由的url时:

Route::get('/{id}', ['as' => 'profile', function($id) {
    return $id;
}]);

请注意,我在 boot 方法中添加了一个路由模式,用于检查 id 是否为数字。

【问题讨论】:

    标签: laravel laravel-5 laravel-routing laravel-middleware


    【解决方案1】:

    要检索路由参数,您应该使用route():

    public function handle($request, Closure $next)
    {
        echo $request->route('id');
        return $next($request);
    }
    

    【讨论】:

    • 它会抛出一个错误:FatalErrorException in Request.php line 674: Call to a member function parameter() on a non-object
    • 这是因为全局中间件在路由发生之前运行。你想完成什么?
    • 记录所有请求。 (仅用于测试目的)
    • 那我就登录$request->uri() 或者创建一个在请求处理后运行的中间件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2011-03-22
    • 2017-01-27
    • 2013-10-01
    相关资源
    最近更新 更多