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

Laravel报错:Route: Region.update缺少必填参数

Laravel:Missing required parameter for [Route: Region.update] 错误修复

已完成Laravel Bootcamp教程,自行实现区域编辑功能时触发上述错误。列表页的编辑链接可正常跳转至http://localhost/Region/5/edit,但编辑页提交表单时报错。尝试过显式传递['Region' => $region]参数,问题依旧。

相关代码

RegionController.php

public function edit(Region $region)
{
    return view('regions.edit', [
        'region' => $region,
    ]);
}

public function index()
{
    $regions = Region::all();

    return view('regions.index', [
        'regions' => $regions,
    ]);
}

public function update(Request $request, Region $region)
{
    $validated = $request->validate([
        'name' => 'required|string|max:255',
    ]);

    $region->update($validated);

    return redirect(route('Region.index'));
}

regions/index.blade.php

<x-dropdown-link :href="route('Region.edit', $region)">
   <img src={{url("build/img/edit.png")}} width="40">
</x-dropdown-link>

regions/edit.blade.php

<form method="POST" action="{{ route('Region.update', $region) }}">

web.php

Route::resource('Region',RegionController::class)
    ->only(['index', 'create', 'store', 'edit', 'update'])
    ->middleware(['auth', 'verified']);

问题原因

  1. 路由名称与参数大小写不匹配:Laravel资源路由默认使用小写单数的参数名称(如region),但你定义路由时用了大写的Region,导致路由生成时无法正确匹配参数。
  2. 缺少PUT请求方法声明:update对应的资源路由是PUT/PATCH请求,仅设置method="POST"无法触发正确的路由,也可能间接导致参数解析异常。

解决方案

方案1:遵循Laravel资源路由命名规范(推荐)

Laravel资源路由建议使用小写复数形式的资源名称,修正路由定义:

Route::resource('regions', RegionController::class)
    ->only(['index', 'create', 'store', 'edit', 'update'])
    ->middleware(['auth', 'verified']);

同步更新所有路由调用为小写规范:

  • 列表页编辑链接:route('regions.edit', $region)
  • 编辑页表单action:route('regions.update', $region)
  • 控制器跳转:redirect(route('regions.index'))

方案2:兼容现有路由名称(不推荐)

若不想修改路由名称,需显式传递小写的region参数(注意是小写):

<form method="POST" action="{{ route('Region.update', ['region' => $region]) }}">

必加步骤:声明PUT请求方法

无论采用哪种方案,编辑表单必须添加@csrf和@method('PUT'),否则Laravel无法识别update路由:

<form method="POST" action="{{ route('regions.update', $region) }}">
    @csrf
    @method('PUT')
    <!-- 你的表单字段 -->
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:01:40