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

Laravel9+Inertia+Vue3中记录无法删除且返回303状态码问题

问题解决:Laravel 9 + Inertia + Vue3 删除记录失败且返回303状态码

核心问题分析

  1. 303状态码并非异常:HTTP规范中,DELETE请求后的重定向应返回303(See Other),而非302。Laravel的redirect()->back()在处理DELETE请求时会自动返回303,这是符合标准的行为,无需担心。
  2. 记录未删除的根本原因:路由模型绑定参数名不匹配,导致控制器拿到的是空的模型实例,执行delete()不会删除任何数据。

具体修复步骤

1. 修正控制器的路由模型绑定参数名

Laravel路由模型绑定依赖参数名与控制器变量名完全匹配。你的Route::resource('dailyrevenue', ...)生成的destroy路由参数是{dailyrevenue},但控制器方法中用了$revenue,导致无法正确注入对应模型实例。

修改DailyRevenueController.php的destroy方法:

public function destroy(DailyRevenue $dailyrevenue)
{
    $dailyrevenue->delete();
    return redirect()->back();
}

2. 简化Inertia请求与模板代码

现有代码存在冗余:Inertia.delete本身已发送DELETE请求,无需重复指定method: 'delete';模板中的form和_method隐藏域也没必要,直接用按钮绑定点击事件即可。

修改Vue3逻辑:

const submit = function (id) {
    const check = confirm("Are you sure to delete?")
    if (check) {
        Inertia.delete(route('dailyrevenue.destroy', id))
    }
}

修改模板代码:

<template #cell(actions)="{item: tax}">
    <button @click="submit(tax.id)">Delete</button>
</template>

验证

修改后,路由模型绑定会正确找到对应记录并执行删除操作,303状态码会被Inertia正常处理,页面自动重定向回上一页并更新数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:31:15