Laravel 9中数组验证功能失效问题求助
Laravel 9数组验证失效原因排查及解决
问题核心原因
你初始化验证器时,第一个参数已经通过$request->input('data_attributes')拿到了目标数组,但验证规则里却错误地使用data_attributes.*.nic作为字段名。此时验证器会在传入的数组(即原data_attributes的实际值)中寻找名为data_attributes的子键,而这个键根本不存在,导致验证规则完全没有触发。
修复方案
将验证规则中的字段名改为*.nic,直接针对传入数组的子元素做验证:
$validator = Validator::make($request->input('data_attributes'), [ '*.nic' => 'required|max:9' ]);
补充写法
如果你的请求整体结构是外层包含data_attributes键(比如request()->all()返回['data_attributes' => [/* 你的数组数据 */]]),也可以保留data_attributes.*.nic规则,但此时验证器的第一个参数要传入整个请求数据,而非单独的data_attributes值:
$validator = Validator::make($request->all(), [ 'data_attributes.*.nic' => 'required|max:9' ]);
两种写法二选一即可,核心是保证规则中的字段路径和传入验证器的数据源结构完全匹配。
内容的提问来源于stack exchange,提问作者Indrakumara
相关产品推荐
相关产品推荐

