php - 此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE。在添加字段时
问题描述
所以我正在学习laravel,我有一个问题。我在项目中有项目和任务。所以我在同一页面上添加项目任务以显示项目。每当我尝试添加任务时都会遇到此问题
错误的图像
错误:
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');
推荐阅读
- html - 大型 HTML 表格或
用于更快页面加载的元素
- javascript - 在 Node.js 中使用 EventEmitter 和 Typescript 的类型安全侦听器
- server - 一台机器上的两个服务器应用程序
- python - 你能给我看一个在 Django 中带有基于类的视图的 Mixins 的例子吗?用途是什么?
- django - 无法在 Django 的 UserCreationForm 中引发错误?
- phpmyadmin - 连接到远程服务器时无法让 phpmyadmin 使用登录表单
- javascript - 如何使这个 Javascript 代码在 wordpress 中工作?
- java - FIFO管道/缓冲区将可变长度的数据转换为固定大小的长度
- asp.net - 我已经使用外键通过数据库从下拉列表中提取 ImagelocationID 的值,并且在创建时出现此错误
- javascript - JQuery:为未知数量(动态)字段创建更改事件