Laravel Livewire必填字段失焦时实时验证异常求助
问题
使用Laravel Livewire原生实时表单验证时,希望实现必填字段未输入内容就失焦时触发验证,但当前配置的required规则未按预期工作——仅在输入空格或字符数不足时min规则生效,未输入内容失焦时不会显示“必填项”错误提示。
模板代码
<input type="text" wire:model.blur="card_name" id="card_name" name="card_name" autocomplete="" required class="block w-full rounded-md shadow-sm border-gray-30 focus:ring-governor-bay-500 focus:border-governor-bay-500 sm:text-sm @error('card_name') border-red-600 @else border-gray-300 @enderror" >
组件验证代码
#[Rule([ 'card_name' => 'required|min:5', ], message: [ 'required' => 'Name on card is required.', 'min' => 'Name on card is too short.', ], attribute: [ 'Name on cards.*' => 'Name on card', ])] public $card_name = [];
修复方案
问题出在两个关键错误上,修正后即可实现需求:
修正字段类型:将
$card_name的初始值从数组[]改为空字符串''。因为输入框是文本类型,绑定到数组字段会导致Livewire对required规则的判断逻辑异常——空数组不会触发required错误,而空字符串会在失焦时触发验证。
修改后的组件字段定义:public $card_name = '';修正属性映射:
#[Rule]的attribute数组里的键值错误,应该对应字段名card_name,而不是数组通配符Name on cards.*,确保错误提示的属性名称正确匹配。
修改后的验证属性配置:
attribute: [
'card_name' => 'Name on card',
]
完成以上修改后,当用户未输入内容就失焦该字段时,Livewire会触发`required`规则验证,并显示对应的错误提示。 内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

