laravel 5.1-在中间件中重写url变量,然后将新值传递给其他中间件和控制器


laravel 5.1 - rewrite url variable in middleware then pass new value to additional middleware and controller

我希望在中间件中操作url变量,然后将新值传递给一些额外的中间件进行检查,然后将值传递给控制器

任意示例:domain.com/1 ->中间件将3添加到1 ->中间件,以根据数据库->检查新编号4并将新编号传递给控制器

我的路线:

Route::get('{v}', [
        'middleware' => ['rewrite','dbCheck'],
        'uses' => 'video@search'
    ]);

我使用$v = $request->v;-在中间件中获取变量,如何将重写后的变量返回到下一个中间件并最终返回到控制器

之后,我尝试使用$request['v'] = $v;重置变量,但没有任何乐趣

每次尝试从Request对象读取值时,它都会合并所有可用的数据源(POST/GET数组、查询字符串、路由参数),并从合并结果中获取值。因此,如果要修改在尝试从请求中获取时将返回的值,则需要修改的不是请求对象,而是源。

在您想要修改路线参数值的情况下,以下代码将适用于您:

$request->route()->setParameter('v', $request->v + 3);