我希望在中间件中操作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);