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

dev*_*l Ψ 2 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');
});
Run Code Online (Sandbox Code Playgroud)

如果路由/about?param=123在重定向后看起来像,param 将丢失。有没有办法将参数添加到重定向方法?如我所见,此函数不包含输入参数。该参数是可选的,因此可能不提供。也许有办法重写此功能?或其他解决方案?所有建议将不胜感激

更新

是否可以覆盖该redirect()方法?我认为这将是最好的解决方案

suz*_*zan 7

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

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

无需使用命名路由

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

对于可选参数

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


Phi*_*ter 6

是的,您可以重定向到命名路由并传递参数,如下所示:

return redirect()->route('en.about', ['param' => 123]);
Run Code Online (Sandbox Code Playgroud)

  • 不确定,为什么不能创建命名路由?使用它们有很多好处。 (2认同)

Bab*_*deh 5

只是做这样的事情:

 return redirect('/en/about?param='.$param);
Run Code Online (Sandbox Code Playgroud)