在我的控制器中,我有一个方法应该重定向到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
传递它,但这也不起作用。
感谢您的帮助。
答案 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
在表单请求中出现错误的情况下使用。