如何在Laravel中重定向到POST路由

时间:2017-08-01 16:27:12

标签: php laravel laravel-5 laravel-5.4

在我的控制器中,我有一个方法应该重定向到POST路由。我也不能将此路线设为GET。有没有解决方案?

我的控制器代码如下:

// After a bunch of other if statements, etc
return redirect('newUser')->with('user', $user);

现在我的路线(在web.php中)如下:

Route::post('/newUser', function() {
    $user=session('user');
    dd($user);
    return view('profileNewUser', $user);
});

向我抛出的错误是MethodNotAllowedHTTPException

我知道我的错误与_token有关,无论如何我可以允许令牌字段传递吗?我尝试在我的重定向中使用with传递它,但这也不起作用。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

尝试重定向到命名路线。

Route::post('/newUser', function() {
    $user=session('user');
    dd($user);
    return view('profileNewUser', $user);
})->name('newusr');

然后:

return redirect()->route('newusr', ['user'=>$user]);

或者,重定向到控制器操作。

答案 1 :(得分:1)

因为你需要网址是“新用户”。然后你可以简单地创建一个相同网址的GET路由。

关于为什么你想要将post请求返回到同一路由的问题仍然有效,因为它可能导致对同一路由的无限调用。

然而,一种方法是,你可以添加一个逻辑来检查用户是否已经在会话中,否则这样做,否则这种模式并不是很好。

最好的方法是将返回POST响应的页面与呈现视图的页面分开。

就像我在评论中建议的那样:您只需将此getUser路径移动到控制器中,然后使用Laravel的响应操作或其他方式。 Here is the answer以防您想要浏览。

  

PS:我的回答是基于我对你的问题的理解。谢谢。

答案 2 :(得分:0)

据我所知,您只能使用以下方式重定向到邮政路线:

return back()->withInput(['postvar1' => 'postval1']);  // L5.5

在表单请求中出现错误的情况下使用。