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

Laravel 8删除数据库数据时路由不支持DELETE方法报错如何解决

Laravel 8 删除请求路由不支持报错排查

报错详情

The DELETE method is not supported for this route. Supported methods: GET, HEAD. -

报错原因及解决办法

  • 路由顺序冲突
    Laravel路由会按照定义顺序自上而下匹配,如果你在Route::delete('/projects/{id}', [ProjectController::class, 'destroy'])之前定义了URI匹配规则相同的GET路由(比如Route::get('/projects/{id}', xxx)),DELETE请求会优先触发前面的GET路由,导致方法不匹配。
    解决办法:将DELETE路由移到同路径GET路由之前。你可以执行php artisan route:list命令查看已注册的路由列表,确认DELETE路由存在且没有被其他路由覆盖。
  • 表单语法错误
    你贴出的表单代码开头缺失<符号,若实际代码也存在该问题,会导致HTML解析失败,表单默认以GET方式提交请求,无法匹配DELETE路由。
    修正后的表单代码如下:
    <form action="/projects/{{ $project->id }}" method="POST">
        @csrf
        @method('DELETE')
        <button>Finish your project</button>
    </form>
    
  • 路由缓存未更新
    如果你之前开启过路由缓存,修改后的路由不会自动同步到缓存中,会导致请求无法匹配到新定义的DELETE路由。
    解决办法:执行php artisan route:clear清除路由缓存即可,开发环境下不建议开启路由缓存,避免每次修改路由都要手动清缓存。
  • 硬编码路径出错
    手动写的表单提交地址可能出现拼写错误、前缀缺失/多余的问题,导致匹配到其他GET路由。
    解决办法:使用路由命名绑定提交地址,先给路由设置别名:
    Route::delete('/projects/{id}', [ProjectController::class, 'destroy'])->name('projects.destroy');
    
    再将表单的action属性替换为路由生成方法:
    <form action="{{ route('projects.destroy', $project->id) }}" method="POST">
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:09:04