Php 无法验证laravel中的嵌套数组
验证具有相同键和规则的嵌套数组时,将拾取错误的错误消息,例如,如果规则为:Php 无法验证laravel中的嵌套数组,php,laravel,Php,Laravel,验证具有相同键和规则的嵌套数组时,将拾取错误的错误消息,例如,如果规则为: $rules = [ 'elem.*.test' => 'required', 'elem.*.subitem.test' => 'required', ]; 以及: $messages = [ 'elem.*.test.required' => 'top level item required', 'elem.*.subitem.test.required' => 'sub item requ
$rules = [ 'elem.*.test' => 'required', 'elem.*.subitem.test' =>
'required', ];
以及:
$messages = [ 'elem.*.test.required' => 'top level item required', 'elem.*.subitem.test.required' => 'sub item required', ];
$messages = [
'elem.*.subitem.test.required' => 'sub item required',
'elem.*.test.required' => 'top level item required'
];
Str::is()
在FormatsMessages::getFromLocalArray()中调用
你不能用
str_replace('*', '[^.]*', $sourceKey)
因为它被preg_quote()转义
你可以加一个
$wildcard = '.*'
在FormatsMessages::getFromLocalArray()中调用Str::is()
的参数,并用'[^.]*'
Str::is()
重写它
你不能用
str_replace('*', '[^.]*', $sourceKey)
因为它被preg_quote()转义
你可以加一个
$wildcard = '.*'
参数设置为Str::is()
,并用'[^.]*'
覆盖它这是一个已知问题:
您可以通过交换消息来修复它:
$messages = [ 'elem.*.test.required' => 'top level item required', 'elem.*.subitem.test.required' => 'sub item required', ];
$messages = [
'elem.*.subitem.test.required' => 'sub item required',
'elem.*.test.required' => 'top level item required'
];
这是一个已知的问题:
您可以通过交换消息来修复它:
$messages = [ 'elem.*.test.required' => 'top level item required', 'elem.*.subitem.test.required' => 'sub item required', ];
$messages = [
'elem.*.subitem.test.required' => 'sub item required',
'elem.*.test.required' => 'top level item required'
];
你能展示你的正则表达式吗?@MaratBadykov它是$pattern=str_replace('*','.*',$pattern);你能展示你的正则表达式吗?@MaratBadykov它是$pattern=str_replace('*','.*',$pattern);