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

使用PUT方法时持续提示不被允许的问题排查

Laravel PUT方法更新产品提示「不被允许」的解决方案

核心问题及修复步骤

1. 表单提交路由错误

你的表单action指向了products.edit(GET请求的编辑页面路由),但PUT请求应该提交到products.update路由,这是导致「不被允许」提示的直接原因。

修改blade表单代码:

<form action="{{ route('products.update', $product->id) }}" method="post">
    @method('PUT')
    @csrf
    <!-- 其他表单字段 -->
</form>

2. 验证规则与请求字段不匹配

控制器中验证的字段是name、desc,但实际从请求中获取的是product_title、product_desc,字段不匹配会触发验证失败,间接引发权限类提示。

修改控制器的验证规则:

$validatedData = $request->validate([
    'product_title' => 'required',
    'product_desc' => 'required',
    'product_price' => 'required|numeric',
    'product_qty' => 'required',
]);

3. DB::update参数缺失

你的SQL语句包含5个占位符(title、desc、price、qty、id),但绑定的参数数组只有4个值,缺少$id,数据库执行错误会间接触发权限类提示。

修改控制器的DB更新代码:

DB::update('update products set title = ?, desc = ?, price = ?, qty = ? where id = ?', 
[$newTitle, $newDesc, $newPrice, $newQty, $id]);

4. 清理重复的edit方法

控制器中重复定义了edit方法,会引发语法错误,建议删除其中一个:

// 保留一个edit方法即可
public function edit(Product $product)
{
    return view('products_update', compact('product'));
}

额外优化建议

  • 利用Laravel模型绑定简化update方法,无需手动处理id:
    public function update(Request $request, Product $product)
    {
        $validated = $request->validate([
            'product_title' => 'required',
            'product_desc' => 'required',
            'product_price' => 'required|numeric',
            'product_qty' => 'required',
        ]);
    
        $product->update([
            'title' => $validated['product_title'],
            'desc' => $validated['product_desc'],
            'price' => $validated['product_price'],
            'qty' => $validated['product_qty'],
        ]);
    
        return redirect()->route('products.index')->with('success', '产品更新成功。');
    }
    
    对应的路由可简化为:
    Route::put('/products/{product}', [ProductController::class, 'update'])->name('products.update');
    

内容的提问来源于stack exchange,提问作者Fresh Grad CS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:27:33