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

Laravel 10添加商品报错:POST方法不支持product/create路由

Laravel 10 添加商品功能异常排查与修复

问题现象

使用Laravel 10开发商品CRUD功能,数据库配置及迁移已完成,手动添加数据和删除功能正常,但添加商品时出现错误:

"The POST method is not supported for route product/create. Supported methods: GET, HEAD, PUT, PATCH, DELETE."

尝试修改add.blade.php表单提交方法为GET/PUT后,页面仅刷新,数据无法存入数据库。

错误原因分析

  1. 表单提交地址错误:add.blade.php中表单action属性为空,导致提交到当前URL(/product/create),而该路由仅支持GET/HEAD等方法,不支持POST。
  2. 多余的请求方法声明:Laravel表单默认使用POST方法,无需额外添加@method('POST'),该指令会干扰请求方法的正确识别。
  3. 硬编码URL不规范:视图中部分链接使用固定硬编码URL,既不利于环境迁移,也容易导致路由匹配错误。

修复步骤

1. 修正添加页面表单配置

修改add.blade.php中的表单,指定正确的提交路由并移除多余的方法声明:

<form id="add-frm" method="POST" action="{{ route('product.store') }}" class="border p-3 mt-2">
    <div class="control-group col-6 text-left">
        <label for="title">Title</label>
        <div>
            <input type="text" id="title" class="form-control mb-4" name="title"
                   placeholder="Enter Title" required>
        </div>
    </div>
    <div class="control-group col-6 text-left mt-2">
        <label for="body">Short Notes</label>
        <div>
        <textarea id="short_notes" class="form-control mb-4" name="short_notes"
                  placeholder="Enter Short Notes" rows="" required></textarea>
        </div>
    </div>
    <div class="control-group col-6 text-left mt-2">
        <label for="body">Price</label>
        <div>
            <input type="text" id="price" class="form-control mb-4" name="price"
                   placeholder="Enter Price" required>
        </div>
    </div>

    @csrf

    <div class="control-group col-6 text-left mt-2"><button class="btn btn-primary">Add New</button></div>
</form>

2. 替换硬编码URL为路由名称

  • add.blade.php中的商品列表链接:
<a href="{{ route('product.index') }}" class="btn btn-outline-primary">Product List</a>
  • list.blade.php中的新增商品链接:
<a href="{{ route('product.create') }}" class="btn btn-outline-primary">Add new product</a>

3. 验证路由配置(可选)

执行以下命令查看所有已注册路由,确认product.store路由存在且支持POST方法:

php artisan route:list

4. 确认模型填充属性

确保Product模型的$fillable属性包含所有需要存入数据库的字段(当前代码已正确配置):

protected $fillable = ['title', 'short_notes', 'price'];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:59:48