I have 3 types of data to validate
This validation works for single data
$validator = Validator::make($request->all(), [
'tests.*.finding' => 'required',//works for single test
]);
Data sample for above
["tests"=>
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
And this validation works for data in group
$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'required',//works for group
]);
Data sample for above
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
],
"B" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
]
]
How to validate for single and data in group combined
Combined Data sample
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
],
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
Please help me to fix this, as 1st scenario always gives error for scenario second and vice versa.
This is the solution,Laravel provided sometimes
rule to manage existence of element and then only proceed to check next rule.
So final validation rule is.
$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'sometimes|required',//works for group
'tests.*.finding' => 'sometimes|required',//works for single test
]);
Doc for this : https://laravel.com/docs/5.4/validation#conditionally-adding-rules