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

Laravel Livewire如何验证数组模型字段?validateOnly无效问题

解决Laravel Livewire验证关联数组字段的问题

你的array字段属于单个关联数组(而非数组列表),所以array.*这种通配符写法不适用(它针对的是array[0].quantity这类数组项的场景)。以下是几种可行的验证方式:

方式1:一次性验证array下的所有子字段

直接把array的所有子字段作为数组传给validateOnly:

$this->validateOnly([
    'array.quantity',
    'array.name',
    'array.description',
    'array.price',
]);

方式2:提取array相关规则单独验证

从已定义的$rules中筛选出array.开头的规则,再执行验证:

$arrayValidationRules = collect($this->rules)
    ->filter(fn($rule, $key) => str_starts_with($key, 'array.'))
    ->toArray();

$this->validate($arrayValidationRules);

方式3:直接指定array子字段的规则验证

如果不想依赖已有的$rules,可以直接写出array子字段的规则进行验证:

$this->validate([
    'array.quantity' => 'required|integer|min:1',
    'array.name' => 'required|string|max:500',
    'array.description' => 'required|string|max:500',
    'array.price' => 'required|numeric|min:1',
]);

补充说明

如果你的array是数组列表(比如array[0].quantity、array[1].quantity这种结构),那才需要用array.*.quantity这类通配符规则,但你的场景里array是单个关联数组,直接验证其下的具体字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:55:01