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

Laravel validate方法验证失败无错误返回、表单不回填问题

问题修复方案

一、错误信息仅显示空红色div的修复

你当前的错误局部视图遍历方式错误,$errors是MessageBag实例,需要调用all()方法获取所有错误信息再遍历,修改partials/errors.blade.php代码如下:

@if ($errors->any())
   <div class="alert alert-danger">
      <ul>
      @foreach ($errors->all() as $error)
         <li> {{ $error }} </li>
      @endforeach
      </ul>
   </div>
@endif

二、表单输入内容不回填的修复

Laravel验证失败后会将用户输入存入闪存,需要在表单元素中使用old()辅助函数读取闪存的旧值,按以下规则修改表单代码:

1. 文本输入框修改

给所有input标签添加value属性,值为old('对应字段名'),示例:

<!-- 产品名称输入框示例,其余输入框按相同规则修改 -->
<input name="product_name" type="text" class="form-control" value="{{ old('product_name') }}">

2. 下拉选择框修改

给每个option标签添加selected判断,当old('对应字段名')等于当前选项值时选中该选项,示例:

性别下拉框修改:

<select class="form-control" name="gender">
    <option value="Male" {{ old('gender') == 'Male' ? 'selected' : '' }}>
        Male
    </option>
    <option value="Female" {{ old('gender') == 'Female' ? 'selected' : '' }}>
        Female
    </option>
    <option value="Unisex" {{ old('gender') == 'Unisex' ? 'selected' : '' }}>
        Unisex
    </option>
</select>

动态遍历的下拉框修改:

<!-- 产品分类下拉框示例,品牌下拉框按相同规则修改 -->
<select class="form-control" name="category_name">
    @foreach ($product_categories as $product_category)
        <option value="{{ $product_category->category_name }}" {{ old('category_name') == $product_category->category_name ? 'selected' : '' }}>
            {{ $product_category->category_name }}
        </option>
    @endforeach
</select>

三、额外优化(非必须但建议修改)

你的表单中重复定义了CSRF令牌,既写了<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">又写了@csrf,保留@csrf即可,删除原生PHP输出的那行冗余代码。

修改完成后重新提交错误表单即可看到错误提示,且之前输入的内容会自动回填。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:24:02