我有一个 Laravel 8 项目。我有路线:
Route::get('/route-path', 'Client\SomeController@someMethod')->name('MyRouteName');
它的实施是在
SomeController
public function someMethod(Illuminate\Http\Request $request)
{
$field_1 = $request->f1;
$field_2 = $request->f2;
return view('my_view', compact('field_1', 'field_2'));
}
我想将我的网站重定向到
MyRouteName
路线,但我想手动创建请求:
$request = new Illuminate\Http\Request();
$request->request->add([
'f1' => 'value_1',
'f2' => 'value_2',
]);
return redirect()->route('MyRouteName', $request);
是否可以通过这种方式传递虚假请求?如果没有,如何实现?
谢谢! 迈克
我正在编写大部分代码,目前我无法测试。 我会虚心感谢您的建议。谢谢。
在Laravel中,你不能直接将Request对象传递给redirect()->route()方法。 redirect()->route() 方法需要与路由参数相对应的参数,而不是完整的 Request 对象。
但是,您可以传递查询参数或简单地将数据添加到重定向 URL。以下是实现这一目标的方法:
方案一:直接传递参数 您可以直接在重定向中传递参数,如下所示:
返回redirect()->route('MyRouteName', [ 'f1' => '值_1', 'f2' => '值_2', ]);
选项 2:使用查询参数 如果您的路线需要查询参数,您可以这样添加它们:
返回redirect()->route('MyRouteName', [ 'f1' => '值_1', 'f2' => '值_2', ]);
选项 3:使用闪存数据 如果您需要保留会话中的值并在控制器中访问它们,您可以使用闪存数据:
$request->session()->flash('f1', 'value_1'); $request->session()->flash('f2', 'value_2');