php - 验证然后重定向到 Laravel 中的发布路由

标签 php validation redirect laravel

是否可以将用户重定向到 Laravel 中的 POST 路由。 我有两种形式。 form-one 被发送到包含 form-two 的 Route,form-two 被发送到 final Route然后它被验证。如果 $validator->fails() for form-twofinal Route 的真值,我想将用户发送回 < em>from-two 但它是一个POST 路由

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);
    }
}

最佳答案

这不是 Laravel 的特别问题,这需要您了解 HTTP 重定向的工作原理。当您向浏览器发送重定向时,您是在向浏览器发送 302 重定向以及要重定向到的 URL。浏览器会将 GET 请求重定向到提供的 URL。您可能会将响应代码更改为 307,它要求浏览器使用与最初使用安全消息调用的方法相同的方法进行重定向但是依赖它是一个坏主意,因为它已实现跨浏览器不同。此外,Laravel 会要求您使用自己的 header 构建自定义响应对象。

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

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

关于php - 验证然后重定向到 Laravel 中的发布路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23863154/

相关文章:

python - 对动态设置的 MultipleChoiceField 进行验证,该字段最初为空?

iis - 使用 web.config 文件在 IIS 中看似简单的重定向

redirect - HTTP 到 HTTPS 重定向 - IIS 8.5 无法正常工作

php - <head> 在 Chrome 中显示为空

javascript - 将带有 MySql 数据的 PHP 数组放入 Joomla 中的 JS 文件中

php - 在数据库中使用 jQuery 验证表单.. 数字字段中断

javascript - JavaScript 中的时间验证

javascript - Jquery 单独的多选选项更新价格变化

php - 使用表单更新购物车中商品的数量

node.js - 重定向响应中的 cookie