【问题标题】:Validating and then redirecting to a post route in Laravel验证然后重定向到 Laravel 中的 post 路由
【发布时间】:2014-07-14 19:34:53
【问题描述】:

是否可以将用户重定向到 Laravel 中的 POST 路由。 我有 2 个表格。 form-one 被发送到包含 form-two 的 Route,form-two 被发送到 final Route然后验证。如果 form-two$validator->fails()final 路线上的真实值,我想将用户送回 from-two 但它是一个POST Route

Redirect::to('Form-Two')->withErrors($validator);

我尝试使用它,但它失败了,可能是因为它仅适用于 Get 路由。我想做的一件事是将用户重定向到 Get Route,然后从 Get Route 将数据发布到 form-two,但这听起来很愚蠢。有没有更清洁的方法来做到这一点。我是新手。

形式二:

Route::post('form-two', array('before' => 'csrf', function()
{
    $formOneData= Input::all();
    $rules = array(...);

    $validator = Validator::make($formOneData, $rules);
    if ($validator->fails()) {
        return Redirect::to('Form-One')->withErrors($validator);
    }
}

最后一页:

Route::post('final', array('before' => 'csrf', function()
{
    $finalData = Input::all();
    $rules = array(...);

    $validator = Validator::make($finalData, $rules);
    if ($validator->fails()) {
        return Redirect::to('Form-Two')->withErrors($validator);
    }
}

【问题讨论】:

  • withErrors 将错误存储在会话中。也许您可以尝试利用这一事实。
  • 谢谢您的建议,但我仍然需要将用户送回表单二页面,以便他进行必要的更改。是否可以从 routes.php 文件将数据发布到路由?

标签: php validation redirect laravel


【解决方案1】:

这并不是 Laravel 的问题,这需要您了解 HTTP 重定向的工作原理。当您向浏览器发送重定向时,您正在向浏览器发送 302 重定向以及要重定向到的 URL。浏览器会将 GET 请求重定向到提供的 URL。您可能会将响应代码更改为 307,它要求浏览器使用与最初使用安全消息调用相同的方法进行重定向跨浏览器不同。 Laravel 还需要您使用自己的标头构建自定义响应对象。

为了使您的代码在浏览器之间保持兼容,最好将 GET 和 POST 逻辑分开。这就是为什么直接从 POST 路由返回视图通常是个坏主意。

在我看来,如果您想要实现目标功能,您确实需要重新考虑和重新设计表单的工作方式。

【讨论】:

  • 我猜你是对的......我让它有点笨拙。谢谢你的建议。我会尝试重新考虑它。
猜你喜欢
  • 2017-06-19
  • 1970-01-01
  • 2021-06-28
  • 2017-11-29
  • 2016-06-02
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
相关资源
最近更新 更多