此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE。添加字段时

The POST method is not supported for this route. Supported methods: GET, HEAD, PUT, PATCH, DELETE. while adding a field

所以我正在学习 laravel 但我遇到了问题。我在一个项目中有项目和任务。 因此,我将同一页面上的项目任务添加到 show 项目。每当我尝试添加任务时都会遇到这个问题

An image of the web page

An image of the error

错误:

The POST method is not supported for this route. Supported methods: GET, HEAD, PUT, PATCH, DELETE.


网络路线:

Route::resource('projects', 'ProjectsController');
Route::resource('projects/{project}/tasks', 'ProjectTaskController');


路线列表:

+--------+-----------+--------------------------------------+------------------+----------------------------------------------------+--------------+
| Domain | Method    | URI                                  | Name             | Action                                             | Middleware   |
+--------+-----------+--------------------------------------+------------------+----------------------------------------------------+--------------+
|        | GET|HEAD  | /                                    |                  | Closure                                            | web          |
|        | GET|HEAD  | api/user                             |                  | Closure                                            | api,auth:api |
|        | GET|HEAD  | projects                             | projects.index   | App\Http\Controllers\ProjectsController@index      | web          |
|        | POST      | projects                             | projects.store   | App\Http\Controllers\ProjectsController@store      | web          |
|        | GET|HEAD  | projects/create                      | projects.create  | App\Http\Controllers\ProjectsController@create     | web          |
|        | GET|HEAD  | projects/{project}                   | projects.show    | App\Http\Controllers\ProjectsController@show       | web          |
|        | PUT|PATCH | projects/{project}                   | projects.update  | App\Http\Controllers\ProjectsController@update     | web          |
|        | DELETE    | projects/{project}                   | projects.destroy | App\Http\Controllers\ProjectsController@destroy    | web          |
|        | GET|HEAD  | projects/{project}/edit              | projects.edit    | App\Http\Controllers\ProjectsController@edit       | web          |
|        | GET|HEAD  | projects/{project}/tasks             | tasks.index      | App\Http\Controllers\ProjectTaskController@index   | web          |
|        | POST      | projects/{project}/tasks             | tasks.store      | App\Http\Controllers\ProjectTaskController@store   | web          |
|        | GET|HEAD  | projects/{project}/tasks/create      | tasks.create     | App\Http\Controllers\ProjectTaskController@create  | web          |
|        | GET|HEAD  | projects/{project}/tasks/{task}      | tasks.show       | App\Http\Controllers\ProjectTaskController@show    | web          |
|        | PUT|PATCH | projects/{project}/tasks/{task}      | tasks.update     | App\Http\Controllers\ProjectTaskController@update  | web          |
|        | DELETE    | projects/{project}/tasks/{task}      | tasks.destroy    | App\Http\Controllers\ProjectTaskController@destroy | web          |
|        | GET|HEAD  | projects/{project}/tasks/{task}/edit | tasks.edit       | App\Http\Controllers\ProjectTaskController@edit    | web          |
+--------+-----------+--------------------------------------+------------------+----------------------------------------------------+--------------+


添加任务的格式:

<form method="POST" action="/projects/{{ $project->id }}/tasks" class="box" >
        @csrf
        <div class="field">
            <label for="description" class="label">New Task</label>
            <div class="control">
                <input type="text" class="input" name="description" placeholder="New Task">
            </div>
        </div>
        <div class="field">
            <div class="control">
                <button type="submit" class="button is-link">Add Task</button>
            </div>
        </div>
</form>


ProjectTaskController

中的store方法
    public function store(Request $request, Project $project)
    {
        Task::create([
            'project_id' => $project->id,
            'description' => 'description'
        ]);
        return back();
    }

将任务路线移到项目路线上方。目前,/projects 正在匹配所有通配符 /project/* 路由,这意味着它不会到达 Tasks 路由。

Route::resource('projects/{project}/tasks', 'ProjectTaskController');
Route::resource('projects', 'ProjectsController');

我刚刚意识到我要填写的字段没有添加到 $fillable 变量中。

之前:

protected $fillable = ['completed'];

之后:

protected $fillable = ['completed','project_id','description'];