Laravel存储GET参数以重定向回来

时间:2018-06-05 11:54:35

标签: php laravel laravel-5

在我的应用程序中,我目前有一个仪表板,此仪表板接受一个GET参数列表来执行过滤和分页等操作。

我的网址示例是

http://mysite.local/dashboard?filters=true&search=&optIn=on&dateFrom=&dateTo=&submit=Search&page=3

在我的仪表板上,我可以找到一个链接,它会将我带到用户信息,因此我可以对其进行编辑。在我的用户页面中,我可以在其中放置一个只有{{ url()->previous() }}的按钮,然后返回我的仪表板并保留所有GET参数。

问题是用户页面有能力更新,它向POST控制器发送请求,然后返回带有成功或错误消息的用户页面,这可以尽可能多地完成和更新,所以一旦完成,url()->previous现在是用户页面,我丢失了包含所有参数的仪表板URL。

我需要能够使用所有GET参数保留仪表板URL,以便用户在用户页面上完成后,他们总是可以使用他们的过滤器和页面返回到仪表板。

实现这一目标的最佳途径是什么?

2 个答案:

答案 0 :(得分:0)

如果您打算在视图上执行url() - > previous(),那么您必须解决这些参数并将其聚合到网址。

您也可以将其存储在会话中,但是再次,您必须每次都验证会话的内容。

为什么不在控制器/路由上工作并操纵它?

如果您想填充输入,请尝试:

  

https://laravel.com/docs/5.6/requests#old-input

您可以在此处查看有关网址的更多信息:

  

https://laravel.com/docs/5.6/urls

答案 1 :(得分:0)

我认为请求输入是关于它的正确方法,这就是我完成它的方式。

我在表单上附加了一个隐藏的输入,用于检测以前的URL是否从表单传回,如果没有,请使用上一页的URL。

{{ Form::hidden('previous_url',  old('previous_url', url()->previous()) )}}

然后我确保输入正从控制器传回

return redirect()->back()->withInput(Input::all());

最后我将相同的输入代码放在<a href="">中,如此

<a href="{{old('previous_url', url()->previous())}}" class="back-button"><i class="far fa-arrow-alt-circle-left"></i>Back</a>

现在,当我第一次加载用户页面时,a标记将始终包含上一页的网址