在Laravel中进行验证时出现MethodNotAllowedHttpException错误

时间:2019-09-07 20:45:47

标签: php laravel

以下是我的刀片:

<form action="{{route('ans1.eval')}}" method="post">
    <br>
    <input type="radio" name="evaluate" class="evaluate" value=10> 1   &nbsp; &nbsp;
    <input type="radio" name="evaluate" class="evaluate" value=15> 1.5 &nbsp; &nbsp;
    <input type="radio" name="evaluate" class="evaluate" value=20> 2   &nbsp; &nbsp;
    <input type="radio" name="evaluate" class="evaluate" value=25> 2.5 &nbsp; &nbsp;
    <input type="radio" name="evaluate" class="evaluate" value=30> 3   

    <button type="submit" class="btn btn-primary" align="right">Evaluate Answer</button>
    <input type="hidden" value="{{ Session::token() }}" name="_token">
</form>

以下是我的路线:

Route::post('/evaluateans', [
    'uses' => 'AnswerController@postEvaluateAns',
    'as' => 'ans1.eval',
    'middleware' => 'auth'
]);

以下是我的验证:

public function postEvaluateAns(Request $request)
{
    $this->validate($request, [
          'evaluate' => 'required'
    ]);
}

以下是未选择评估时的错误:

MethodNotAllowedHttpException in RouteCollection.php line 218

1 个答案:

答案 0 :(得分:1)

摘自validation上的laravel文档

  

如果验证规则通过,您的代码将继续正常执行;   但是,如果验证失败,则会引发异常,并且   正确的错误响应将自动发送回用户。在   对于传统的HTTP请求,重定向响应将是   生成。

如果验证失败,它将使用GET方法(通过重定向使用GET方法)重定向后退,但是如果您显示,{来自不是form的{​​{1}}的{​​1}}会引发此错误。

因此,您必须使用route路线显示

作为替代方案,您可以manually create your validator,以便在失败验证失败的情况下选择重定向GET路由,例如:

GET