此路由不支持 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'];
所以我正在学习 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
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'];