目前在Laravel中设置了POST路由
Route::post('/confirm', 'MainController@confirm');
' / confirm' 使用从上一页发送的一些POST信息。
我想要完成的是,如果用户只是在网址中输入' index / confirm' ,而不是所有的POST信息都会重定向到'指数'
我有以下代码,无法理解为什么这不起作用。我想这可能是因为为了触发至少一些POST信息的路由需要存在,如果没有则是错误。
$input = $request->all();
if ( !isset($input) ) {
return redirect('');
}
错误讯息:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 没有消息
/Users/&name/Desktop/$filepath/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php
protected function methodNotAllowed(array $others)
{
throw new MethodNotAllowedHttpException($others);
}
答案 0 :(得分:0)
评论者回答了我的问题。需要一个单独的路由GET来处理不允许的用户提交的url请求。
Route::get('/confirm', 'MainController@index');
答案 1 :(得分:0)
保护一个端点这很好,但是你可以应用更全面的解决方案。查看App \ Exceptions \ Handler类。 render()
方法可以了解失败的请求以及引发的特定错误。 public function render($request, Exception $e) ...
。加上这个:
if ($e instanceof Symfony\Component\HttpKernel\Exception\NotFoundHttpException) {
return redirect('/index');
}
小心这一点。如果您输入重定向网址,那么您将陷入无限循环。我还建议一个额外的条件,尊重config('app.env')
的值以进行调试。