【问题标题】:MethodNotAllowedHttpException($others); When have errors in Validate (Laravel 5.5)MethodNotAllowedHttpException($others);验证错误时(Laravel 5.5)
【发布时间】:2018-05-02 14:10:42
【问题描述】:

我有 2 条路线:

Route::post('/post_2', 'TestController@post_2')
    ->name('post_2');
Route::post('/result', 'TestController@result')
    ->name('result');

和 TestController 如下。

public function post_2(){
    return view('post_2View');
}
public function result(\App\Http\Requests\Post_2Request $request){
    return "Successful";
}

Post_2查看

<form action="{{route('result')}}" method="post">
           {{ csrf_field() }}
        <input type="text" name="checkValidate">
        <input type="submit" value="Submit">
    </form>

最后一个是在 Post_2View 中验证 checkValidate 输入的请求

public function rules()
{
    return [
        'checkValidate'=>'required'
    ];
}
public function messages() {
    return [
        'checkValidate.required'=>"This field is required"
    ];
}

当我在 checkValidate 输入中有数据时,一切正常,但是当请求文件返回错误时,我在浏览器中看到错误

**
 * Throw a method not allowed HTTP exception.
 *
 * @param  array  $others
 * @return void
 *
 * @throws \Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
 */
protected function methodNotAllowed(array $others)
{
    throw new MethodNotAllowedHttpException($others);
}

请告诉我,我该如何解决。 谢谢。

【问题讨论】:

  • 帮自己一个忙,并从您的 result 路由返回重定向,以避免混淆用于显示当前页面的方法。
  • 您在哪里使用post('/post_2' 我的意思是当您将数据发布到/post_2 时?
  • 这是我用来调用 post_2 的代码。 &lt;form action="{{route('post_2')}}" method="POST"&gt; {{ csrf_field() }} &lt;input type="submit" value="Submit"&gt; &lt;/form&gt;

标签: laravel laravel-5 validate-request


【解决方案1】:

由于您没有向/post_2 发送任何数据,请使用get 动词代替post 请求

  Route::get('/post_2', 'TestController@post_2')
->name('post_2');

或者你可以同时使用

  Route::match(['get', 'post'],'/post_2', 'TestController@post_2')
->name('post_2');

因为当您验证后返回时,它是获取请求

【讨论】:

  • 我仍然有问题,当我尝试在我的项目中这样做时发生了一些事情。 This page isn’t working localhost redirected you too many times. Try clearing your cookies. ERR_TOO_MANY_REDIRECTS@user2486
  • 您进行了哪些更改以及您在哪条路径上收到此错误?
  • 当我在此处发布的示例中进行更改时,效果很好。但在我的实际项目中,错误发生了。
  • 那么肯定有一些与这条路线相关的路线post_2或任何在你的项目中递归调用的路线,找到并检查这个?
  • 这是我在实际项目中的路线。 Route::match(['get', 'post'],'/questionExcel/add', 'admin\part_3\edit_part_3_test_adminController@add_questionExcel') -&gt;name('part_3.add.questionExcel'); Route::post('/questionExcelConfirm/add', 'admin\part_3\edit_part_3_test_adminController@add_questionExcelConfirm') -&gt;name('part_3.add.questionExcelConfirm'); 我读取了一个 Excel 文件,并在将其保存到数据库之前进行检查。如果您需要更多代码,我将发送给您。感谢@user2486
【解决方案2】:

我找不到这个异常发生的原因,但是我找到了解决方法如果验证失败不返回MethodNotAllowedHttpException

            $validator = Validator::make($request->all(),[
                'name' => 'required'
            ]);

            if ($validator->fails()) {
                return response()->json(['message'=>'Name field is required'],422);
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-03
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2016-03-26
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多