【问题标题】:Laravel store GET parameters to redirect backLaravel 存储 GET 参数以重定向回
【发布时间】:2018-11-14 21:42:51
【问题描述】:

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

我的网址的一个例子是这样的

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

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

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

我需要能够将仪表板网址与所有 GET 参数一起保存,以便用户在用户页面上完成操作后,他们始终可以使用过滤器和页面返回仪表板。

实现这一目标的最佳方法是什么?

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

如果您打算在视图上执行 url()->previous(),那么您必须解决获取参数并将其聚合到 url 的问题。

您也可以将其存储在 Session 中,但话又说回来,您必须每次都验证 Session 的内容。

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

如果你想填充输入,试试这个:

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

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

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

【讨论】:

  • “你必须每次都验证 Session 的内容” - 你在存储数据时验证它,在使用它之前你无论如何都需要这样做。无需额外验证。
【解决方案2】:

我认为请求输入是正确的方式,我就是这样做的。

我在我的表单上附加了一个隐藏的输入,它检测是否从表单传回了以前的 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 标签将始终包含上一页的 URL

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 2016-10-09
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多