将get参数添加到laravel的重定向方法中

时间:2018-06-12 12:04:41

标签: php laravel laravel-5

我使用laravel 5.6

我有GET参数,我想传递给重定向功能。

Route::get('/about', function () {
   //I want to add param to this redirect function
   return redirect('/en/about');
});

如果路线在重定向后显示为/about?param=123 param将丢失。有没有办法为重定向方法添加参数?因为我看到这个功能不包含输入参数。参数是可选的,因此可能不提供。也许有超越这个功能的方法?或其他一些解决方案?所有建议将不胜感激

更新

可以覆盖redirect()方法吗?我认为在我的情况下,这将是最好的解决方案

6 个答案:

答案 0 :(得分:3)

您必须在URL中获取参数并将其传递给数组中的重定向方法

Route::get('/about/{param}', function () {
   return \Redirect::route('/en/about', ['param'=>$param])
});

无需使用命名路径

Route::get('/about/{param}', function () {
   return redirect('/en/about', ['param'=>$param])
});

对于可选参数

Route::get('/about/{param?}', function ($param = 'my param') {
   return redirect('/en/about', ['param'=>$param])
});

答案 1 :(得分:1)

是的,您可以redirect to named routes并传递参数,如下所示:

return redirect()->route('en.about', ['param' => 123]);

答案 2 :(得分:1)

Route::get('/about', function () {
   //I want to add param to this redirect function
   return redirect()->to(url('/en/about',['param' => 'Pram vakue', 'param2' => $param]));
});

如果使用route(),则必须创建命名路线。

希望这有帮助

答案 3 :(得分:1)

如果您不想添加路线名称,那么您可以使用控制器功能

ONE_MINUS_SRC_COLOR

OR与辅助函数

Route::get('/about/{param}', function () {
   return \Redirect::action('CONTROLLER@FUNCTION',['param'=>$param])
});

答案 4 :(得分:1)

做这样的事情:

 return redirect('/en/about?param='.$param);

答案 5 :(得分:0)

这种情况下最好这样做:

return redirect(route("en.about")."?param=123");