Laravel检查POST!isset然后重定向抛出错误

时间:2018-03-26 14:11:51

标签: laravel routing

目前在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);
}

2 个答案:

答案 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')的值以进行调试。