【问题标题】:Laravel 5.4: How do I redirect back two pages with input?Laravel 5.4:如何通过输入重定向回两个页面?
【发布时间】:2018-01-25 18:56:25
【问题描述】:

我正在尝试重定向回两个页面并重新填写他们的输入。

这是我的网站流程:
1.登陆结帐页面并填写。点击提交。
2.登陆密码验证页面,客户输入他们的电话号码以接收密码。他们按提交。
3.他们登陆页面,输入发送给他们的密码。

他们有 10 次尝试在第三页输入他们的 PIN 码。如果第 10 次后不正确,我想重定向回第一页。

我知道如何重定向回我可以做的一页 \Redirect::back()->withInput()->withErrors(); 但是如何重定向回显示错误的两个页面并使用原始值填写表单?

我该怎么做?

【问题讨论】:

  • 显示你的代码到目前为止你做了什么。
  • @commonsense 我没有,因为我完全迷失了这个。我知道如何使用\Redirect::back()->withInput()->withErrors(); 重定向回一页,但不知道如何返回两次并再次填写错误的表单。

标签: php forms laravel redirect laravel-5


【解决方案1】:

为什么不直接重定向to()route()?如果第一页(即结帐页面)在所有尝试失败后尝试重定向到始终相同,则重定向两次是没有意义的,那只是添加了一个不必要的请求。

【讨论】:

  • 我在想,但我如何才能用用户添加的输入填写表单?
  • back() 一样,输入和错误需要保留在会话中。在重定向之前,您可能需要在会话中调用 save()
  • 在会话中致电save()?你什么意思?我想我从来没有这样做过。
  • Session 门面有一个save() 方法,如果您需要立即访问该值。否则,在下一个请求生命周期开始之前将无法访问它。您可能不需要这个,只是我在阅读有关会话的另一个问题后的一个想法。
【解决方案2】:

本身不要重定向两次,也就是说,在伪代码中不要尝试类似:

\Redirect::back()::back()

很大程度上是因为 Laravel 不知道状态/第 2 页返回。充其量你可以基于HTTP_REFERER 重定向回来[一次],这只是最后一个访问的 URL。

既然您已经知道该页面,它们也应该被重定向回来 - 为什么不直接重定向到该 URL?

我是这么想的,但是我怎样才能用用户添加的输入来填写表单呢?

将其存储在某处:会话、cookie、数据库,也许传入查询字符串....

【讨论】:

  • 这是我的第一个解决方案,但我想可能有一个我不知道的替代解决方案。
【解决方案3】:

您可以使用this solution 将两个页面重定向回来。要传递数据,请添加with()withInput() 和/或withErrors()

return redirect(session('links')[2])->withInput()->withErrors();

您将能够像使用back() 一样读取这些数据。

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2017-09-20
    • 1970-01-01
    • 2011-03-19
    • 2022-11-15
    相关资源
    最近更新 更多