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

Laravel获取帖子ID及解决编辑删除404错误问题求助

Laravel更新/删除操作404错误解决及ID获取方法

我是Laravel新手,尝试编辑和删除关联到更新页面的车辆数据,但每次执行更新或删除都会出现404页面未找到错误,推测问题出在URL上。

问题根源

你当前使用相对路径(../cars/{{ $car->id }}、cars/{{ $car->id }}/edit)生成URL,这种方式会根据当前页面URL动态变化,很容易出现路径错误。Laravel的资源路由已经定义了标准的命名路由,应该用命名路由生成绝对路径。

解决步骤

1. 修正编辑页面(edit.blade.php)的表单提交路径

把表单的action改为使用route()辅助函数,对应资源路由的cars.update命名路由:

<form action="{{ route('cars.update', $car->id) }}" method="POST">
    @csrf
    @method('PUT')
    <!-- 表单输入项保持不变 -->
    <button type="submit" class="bg-teal-500 block shadow-5xl mb-10 p-2 w-80 uppercase font-bold text-white">
      Update
    </button>
</form>

2. 修正列表页的编辑链接和删除表单路径

  • 编辑链接使用cars.edit命名路由:
<a class="pb-2 italic text-teal-500" href="{{ route('cars.edit', $car->id) }}">
  Edit &rarr;
</a>
  • 删除表单使用cars.destroy命名路由:
<form action="{{ route('cars.destroy', $car->id) }}" method="POST">
 @csrf
 @method("delete")
 <button type="submit" class="pb-2 italic text-red-500">
     Delete &rarr;
 </button>
</form>

3. 优化控制器方法(可选,更规范)

Laravel支持路由模型绑定,可以直接注入Car模型实例,无需手动查询ID:

更新方法优化:

public function update(Request $request, Car $car)
{
    $car->update([
        'name' => $request->input('name'),
        'founded' => $request->input('founded'),
        'description' => $request->input('description')
    ]);

    return redirect('/cars');
}

删除方法优化:

public function destroy(Car $car)
{
    $car->delete();
    return redirect('/cars');
}

这种方式下Laravel会自动根据URL中的ID查找对应的Car实例,不存在时自动返回404,比手动find或where更安全规范。

Laravel中获取数据ID的常见方式

  • 从路由参数获取:在控制器方法中直接声明参数(如$id),或通过路由模型绑定获取模型实例后,调用$car->id获取ID。
  • 从模型实例获取:当已持有模型对象(比如$car = Car::find(1)),直接调用$car->id即可获取对应ID。
  • 从请求中获取:如果ID通过表单提交,可使用$request->input('id')获取(资源路由场景下一般无需此方式,因为ID已包含在URL中)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:18:38