是否可以将用户重定向到Laravel中的POST路由 . 我有两种形式 . form-one被发送到包含form-two的路由,而form-two被发送到最终的Route,然后进行验证 . 如果表格二的 $validator->fails()
是最终路线上的真值,我想将用户发送回来,但是它是 POST Route .
Redirect::to('Form-Two')->withErrors($validator);
我尝试使用它但它失败了可能是因为它只适用于Get路线 . 我想做的一件事是将用户重定向到Get Route,然后将数据从Get Line发布到form-two,但这听起来很愚蠢 . 有没有更清洁的方法来做到这一点 . 我是新手 .
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);
}
}
Final Page:
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);
}
}
1 回答
这不是特别的Laravel问题,这要求您了解HTTP重定向的工作原理 . 当您向浏览器发送重定向时,您正在向浏览器发送带有URL的302重定向以重定向到 . 浏览器会将GET请求重定向到提供的URL . 您可能会将响应代码更改为307,要求浏览器使用与最初使用安全消息调用的方法相同的方法执行重定向 but 依赖于此是一个坏主意,因为它在浏览器中的实现方式不同 . 此外,Laravel还要求您使用自己的标头构建自定义响应对象 .
为了使代码在浏览器之间保持兼容,最好将GET和POST逻辑分开 . 这就是为什么直接从POST路由返回视图通常是个坏主意 .
我看到这个的方式,如果你想要你想要的功能,你真的需要重新考虑和重新设计表单的工作方式 .