Laravel 8+,手动将请求传递到路由中,可以吗?

问题描述 投票:0回答:1

我有一个 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);

是否可以通过这种方式传递虚假请求?如果没有,如何实现?

谢谢! 迈克

我正在编写大部分代码,目前我无法测试。 我会虚心感谢您的建议。谢谢。

request parameter-passing laravel-8 php-8
1个回答
0
投票

在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');

© www.soinside.com 2019 - 2024. All rights reserved.