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

Laravel 5.8中PUT/DELETE请求报GET方法不支持问题求助

解决Laravel 5.8中更新/删除操作的GET方法不支持错误

我一眼就揪出问题所在了——你的表单按钮类型不对,导致表单根本没按预期提交!

问题根源

你在编辑表单和删除表单里用的都是type="button"的按钮:

<button type="button" class="btn btn-outline-success">Submit</button>
<!-- 删除按钮也是同样问题 -->
<button type="button" class="btn btn-outline-danger">Danger</button>

这种类型的按钮不会自动触发表单提交,所以当你点击它的时候,表单并没有发送包含PUT/DELETE方法伪造的POST请求。如果这时候误触发了路由访问(比如浏览器的默认行为或误操作),就会变成GET请求,而你的路由只支持PUT/DELETE,自然就抛出不支持GET方法的错误了。

解决方案

把两个表单里的按钮类型改成type="submit",让按钮自动提交表单:

修改后的编辑表单按钮:

<button type="submit" class="btn btn-outline-success">Submit</button>

修改后的删除表单按钮:

<button type="submit" class="btn btn-outline-danger">Danger</button>

补充说明

Laravel的method_field('PUT')和method_field('DELETE')是通过POST表单伪造HTTP请求方法的——浏览器本身不支持PUT/DELETE,所以Laravel会给POST请求加上_method参数,框架内部再转换成对应的请求方法。只有表单正常提交(通过submit按钮或JS手动提交),这个机制才能生效。

如果因为特殊需求必须用type="button",那可以给按钮加JavaScript事件手动提交表单,比如:

<button type="button" class="btn btn-outline-success" onclick="this.form.submit()">Submit</button>

但显然直接用type="submit"是最简单可靠的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:27:41