在我的应用程序中,我目前有一个仪表板,此仪表板接受一个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,以便用户在用户页面上完成后,他们总是可以使用他们的过滤器和页面返回到仪表板。
实现这一目标的最佳途径是什么?
答案 0 :(得分:0)
如果您打算在视图上执行url() - > previous(),那么您必须解决这些参数并将其聚合到网址。
您也可以将其存储在会话中,但是再次,您必须每次都验证会话的内容。
为什么不在控制器/路由上工作并操纵它?
如果您想填充输入,请尝试:
您可以在此处查看有关网址的更多信息:
答案 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
标记将始终包含上一页的网址