为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中进行验证时出现 MethodNotAllowedHttp

在 Laravel 中进行验证时出现 MethodNotAllowedHttp

PHP
哆啦的时光机 2022-01-02 20:20:00
以下是我的刀片:<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 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

来自关于验证的 laravel 文档


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


当您的验证失败时,它会使用一个方法重定向回来GET(重定向使用该GET方法),但是如果您显示的formfrom aroute不是GET一个,则会引发此错误。


所以你必须用路线显示表格GET。


作为替代方案,您可以手动创建验证器,以便GET在验证失败时选择重定向路由,例如:


public function postEvaluateAns(Request $request)

{

    $validator = Validator::make($request->all(), [

        'evaluate' => 'required'

    ]);


    if ($validator->fails()) {

        return redirect('failed_validation_GET_route')

                ->withErrors($validator)

                ->withInput();

    }

    return redirect()->route('success_GET_route')

                     ->with('status', 'Success!');

}


查看完整回答
反对 回复 2022-01-02
  • 1 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信