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

Laravel 9 Blade多选框验证后旧值不显示问题

Laravel Blade多选框验证后旧值不显示的解决方法

问题核心:多选下拉框的name属性带[],验证失败后old($detail_id)返回的是数组类型,你原代码中用old($detail_id) == $value的方式比较数组和字符串,永远不会匹配,因此无法保留选中状态。

修正后的代码

<select class='form-select @error($detail_id) is-invalid @enderror' id="{{ $detail_id }}"
        name="{{ $detail_id }}[]" {{ $size }} {{ $multiple }} {{ $disabled }} required="required">
    @foreach ($values as $key => $value)
        <option value="{{ $value }}" {{ in_array($value, old($detail_id, [])) ? 'selected' : '' }}>{{ $value }}</option>
    @endforeach
</select>

关键说明

  • 使用in_array()函数检查当前选项值是否存在于old()返回的数组中
  • 给old()第二个参数传空数组[],避免当没有旧值时old()返回null,导致in_array()报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:19:01