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

Laravel提交POST表单验证时返回302 found状态码问题求助

问题排查与解决方案

一、302无错误提示的原因和修复

Laravel 内置的validate()方法验证失败时,默认会触发302重定向到请求来源页,同时将验证错误信息存入session的$errors全局变量中,你当前没有在Blade模板中输出错误信息,所以看不到有效提示。

  • 修复方法:在表单Blade页面添加错误输出代码,示例如下:
{{-- 输出全部错误提示 --}}
@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

{{-- 也可以给单个字段单独配置提示,放在对应input下方即可 --}}
@error('item_name')
    <div class="text-danger">{{ $message }}</div>
@enderror
@error('item_price')
    <div class="text-danger">{{ $message }}</div>
@enderror

二、代码中的其他致命错误修复

1. 验证返回值访问方式错误

$rq->validate()验证通过后返回的是数组,不是对象,不能用->访问属性,必须用数组下标:

// 错误写法
$validated->item_price
// 正确写法
$validated['item_price']

2. 字段名不匹配错误

你的验证规则里不存在item_title字段,写入数据库时调用$validated->item_title会直接抛出异常,按照你的表单字段修正写入逻辑:

UsrsItem::create([
    'item_name' => $validated['item_name'],
    'item_price' => $validated['item_price'],
]);

3. 冗余规则清理

验证规则里的item_desc字段没有对应表单输入,虽然是非必填规则不会影响验证,不需要可以直接删除避免混淆。

三、可选:接口场景返回JSON错误

如果当前请求是接口调用不需要页面重定向,可以改用验证门面自定义失败响应:

use Illuminate\Support\Facades\Validator;

public function new_item(Request $rq){
    $validator = Validator::make($rq->all(), [
        'item_name'  => 'required|string|min:4|max:90',
        'item_price' => 'required|integer|min:4'
    ]);

    if ($validator->fails()) {
        return response()->json([
            'code' => 400,
            'msg' => '参数错误',
            'errors' => $validator->errors()
        ], 400);
    }
    $validated = $validator->validated();
    UsrsItem::create([
        'item_name' => $validated['item_name'],
        'item_price' => $validated['item_price'],
    ]);
    // 补充成功后的响应逻辑即可
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:36:05