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
You can following code to fix the validation data.
$customFieldValidation = ["test_id" => 'required|numeric',
"test_two.id" => 'required|numeric',
]);
$this->setRules ( $customFieldValidation );
$customeAttributes = [
"test_three.*.id" => 'Test Three ' // custom message
];
$this->setCustomAttributes ($customeAttributes);
$this->_validate ();
I hope it's helpful to you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With