You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9 更新分类报错:PUT方法不支持 仅支持GET、HEAD

问题根因

报错核心原因是路由配置绑定错误,和请求方法是POST还是PUT没有直接关系:

  • 你定义的更新分类路由/admin/category/update/{id},POST请求指向的是控制器的edit方法,而edit方法是仅支持GET请求、用来返回编辑表单页的方法,根本不处理提交的更新逻辑
  • 控制器方法参数定义冗余,同时使用路由模型绑定和手动传$id,会导致参数解析异常
  • 之前修改路由/请求方法后未清除路由缓存,旧配置仍在生效
修复步骤
  • 修正路由配置,将更新路由绑定的控制器方法从edit改为update,匹配你当前表单用POST提交的写法:
// Admin category routes
Route::get('/admin/category', [AdminCategoryController::class,'index'] )->name('admin_category');
Route::get('/admin/category/create', [AdminCategoryController::class,'create'] )->name('admin_category_create');
Route::post('/admin/category/store', [AdminCategoryController::class,'store'] )->name('admin_category_store');
Route::get('/admin/category/edit/{id}', [AdminCategoryController::class,'edit'] )->name('admin_category_edit');
// 修正此处绑定的方法为update
Route::post('/admin/category/update/{id}', [AdminCategoryController::class,'update'] )->name('admin_category_update');
  • 修正控制器中edit、update方法的参数定义,去掉冗余的模型注入参数,同时将find()改为findOrFail(),避免查询不到数据时报非对象错误:
// 修正edit方法
public function edit($id)
{
    $data = Category::findOrFail($id);
    return view('admin.category.edit', [
        'data' => $data
    ]);
}

// 修正update方法
public function update(Request $request, $id)
{
    $data = Category::findOrFail($id);
    $data->parent_id = 1;
    $data->title = $request->title;
    $data->keywords = $request->keywords;
    $data->description = $request->description;
    $data->status = $request->status;
    $data->save();
    return redirect()->route('admin_category');
}
  • 执行Artisan命令清除缓存,让新配置生效:
php artisan route:clear
php artisan config:clear
  • (可选优化)将表单action改为通过路由名生成,避免硬编码路径后续修改麻烦,替换edit.blade.php中form标签的action属性:
<form action="{{ route('admin_category_update', $data->id) }}" method="POST">
    @csrf
    <!-- 其余表单内容保持不变 -->

如果后续要遵循RESTful规范改用PUT请求,只需要在表单内添加@method('PUT'),同时将更新路由的Route::post改为Route::put即可。

内容的提问来源于stack exchange,提问作者ademclk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 04:33:24