首页 > 解决方案 > 无法验证 laravel 中的嵌套数组

问题描述

验证具有相同键和规则的嵌套数组时,将拾取不正确的错误消息,例如,如果规则是:

$rules = [ 'elem.*.test' => 'required', 'elem.*.subitem.test' =>
'required', ];

和消息:

$messages = [ 'elem.*.test.required' => 'top level item required', 'elem.*.subitem.test.required' => 'sub item required', ];

标签: phplaravel

解决方案


Str::is()在 FormatsMessages::getFromLocalArray() 中调用。

你不能使用

str_replace('*', '[^.]*', $sourceKey) 

因为它被 preg_quote() 转义了。

你可以添加一个

$wildcard = '.*'  

参数Str::is()并覆盖它'[^.]*'


推荐阅读