首页 > 解决方案 > 如何修复 Laravel 7 中此路由不支持 POST 方法的更新错误

问题描述

我是 laravel 的新手,我正在尝试为一个简单的 CRUD 项目创建一个 Todo 应用程序,但我收到一个错误消息

此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE。

我一直在寻找解决方案并尝试所有方法,但不知何故该解决方案无法解决我的错误。

web.php

Route::get('/', 'TaskController@index');
Route::resource('task','TaskController');

TaskController

   public function edit(Task $task)
    {
        return view('task.edit')->with('task', $task);
    }

    public function update(Request $request, Task $task)
    {
        $task->update($request->all());
        return redirect('/');
    }

edit.blade.php

 <form action="{{route('task.update', $task->id)}}" method="POST">
        @csrf
        method('PATCH')
        <div class="input-group mb-3 w-100">
            <input type="text" class="form-control form-control-lg" name="title" value="{{$task->title}}" aria-label="Recipient's username" aria-describedby="button-addon2">
            <div class="input-group-append">
                <button class="btn btn-success" type="submit" id="button-addon2">Update</button>
            <div>
        <div>
        </form>

路线清单:

在此处输入图像描述

标签: phplaravel

解决方案


更新操作传统上是通过PUTorPATCH调用完成的。表单不支持这一点,但Laravel支持使用 name 进行隐藏输入字段_method,指示它是否应该是PUT.

你的语法不正确,应该是。

<form action="{{route('task.update', $task->id)}}" method="POST">
    @csrf
    @method('PATCH')

推荐阅读