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

Laravel Livewire数组验证错误消息不显示问题求助

解决数组验证错误消息无法在表格中显示的问题

问题根源分析

你的代码存在三个核心问题导致错误消息无法正常显示:

  1. @error指令的变量插值错误:Blade的@error指令参数不能用{{ }}包裹变量,否则会被解析为字符串字面量,无法匹配实际的错误字段。
  2. Wire模型字段与验证规则不匹配:验证规则中使用的是requirements.*.file,但模板里的wire:model写成了requirement.{{ $requirements->id }}.file(少了复数s),字段名不一致导致错误无法关联。
  3. 数组索引不一致:模板中wire:model使用$requirements->id作为数组索引,但@error里用的是$key,两者不统一导致错误绑定失败。

修正后的代码

Blade模板代码(requirements部分)

<input type="hidden" name="req_id[{{ $key }}]" wire:model="req_id.{{ $key }}.id" value="{{ $requirements->id }}">
<input type='file' 
       wire:model="requirements.{{ $key }}.file" 
       class="form-control @error("requirements.$key.file") is-invalid @enderror" 
       accept=".pdf">
@error("requirements.$key.file")
<div class="invalid-feedback">{{ $message }}</div>
@enderror

Blade模板代码(input部分)

<input type="hidden" name="req_id[{{ $key }}]" wire:model="req_id.{{ $key }}.id" value="{{ $input->id }}">
<input type='text' 
       wire:model.defer="input.{{ $key }}.input" 
       class="form-control @error("input.$key.input") is-invalid @enderror">
@error("input.$key.input")
<div class="invalid-feedback">{{ $message }}</div>
@enderror

关键说明

  • @error指令使用正确姿势:在@error中直接用字符串拼接变量(如"requirements.$key.file"),不需要额外的{{ }}包裹,Blade会自动解析变量值。
  • 字段名完全匹配:确保wire:model的字段名和后端验证规则中的字段完全一致(比如requirements.{{ $key }}.file对应验证规则的requirements.*.file)。
  • 添加is-invalid类:给输入框添加@error(...) is-invalid @enderror类,Bootstrap的invalid-feedback样式只有在输入框带有is-invalid类时才会显示。
  • 索引统一:保持wire:model和@error中的数组索引一致(这里统一使用$key,如果要改用$requirements->id,则两处都要替换成该值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:18:19