Nik*_*aut 7 php validation laravel laravel-5 laravel-validation
我有3种类型的数据要验证
此验证适用于单个数据
$validator = Validator::make($request->all(), [
'tests.*.finding' => 'required',//works for single test
]);
Run Code Online (Sandbox Code Playgroud)
上面的数据样本
["tests"=>
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
Run Code Online (Sandbox Code Playgroud)
此验证适用于组中的数据
$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'required',//works for group
]);
Run Code Online (Sandbox Code Playgroud)
上面的数据样本
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
],
"B" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
]
]
Run Code Online (Sandbox Code Playgroud)
如何验证组中的单个和数据组合
合并数据样本
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
],
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题,因为第一种情况总是会给第二种情况带来错误,反之亦然.
这是解决方案,Laravel提供sometimes
了管理元素存在的规则,然后才开始检查下一个规则.
所以最终验证规则是.
$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'sometimes|required',//works for group
'tests.*.finding' => 'sometimes|required',//works for single test
]);
Run Code Online (Sandbox Code Playgroud)
Doc for this:https://laravel.com/docs/5.4/validation#conditional-adding-rules