当使用相同的键和规则验证嵌套数组时,例如,如果规则为:
$rules = [ 'elem.*.test' => 'required', 'elem.*.subitem.test' =>
'required', ];
和消息:
$messages = [ 'elem.*.test.required' => 'top level item required', 'elem.*.subitem.test.required' => 'sub item required', ];
答案 0 :(得分:2)
Str::is()
在FormatsMessages :: getFromLocalArray()中被调用。
您不能使用
str_replace('*', '[^.]*', $sourceKey)
因为它会被preg_quote()逸出。
您可以添加
$wildcard = '.*'
Str::is()
的参数,并用'[^.]*'
覆盖
答案 1 :(得分:0)
这是一个已知问题:https://github.com/laravel/framework/issues/22499
您可以通过交换消息来解决此问题:
$messages = [
'elem.*.subitem.test.required' => 'sub item required',
'elem.*.test.required' => 'top level item required'
];