У меня есть 3 типа данных для проверки
Эта проверка работает для одиночных данных
$validator = Validator::make($request->all(), [
'tests.*.finding' => 'required',//works for single test
]);
Пример данных выше
["tests"=>
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
И эта проверка работает для данных в группе
$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'required',//works for group
]);
Пример данных выше
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
],
"B" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
]
]
Как проверить для одиночных и данных в объединенной группе
Пример комбинированных данных
["tests"=>
[
"A" =>[
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
],
[
0 => ["finding"=>""]
],
[
1 => ["finding"=>""]
]
]
Пожалуйста, помогите мне исправить это, поскольку первый сценарий всегда дает ошибку для второго сценария и наоборот.
Это решение, Laravel предоставило sometimes
правило управления существованием элемента, а затем только перейти к проверке следующего правила.
Таким образом, окончательное правило проверки.
$validator = Validator::make($request->all(), [
'tests.*.*.finding' => 'sometimes|required',//works for group
'tests.*.finding' => 'sometimes|required',//works for single test
]);
Doc для этого: https://laravel.com/docs/5.4/validation#conditionally-adding-rules
Вы можете выполнить код, чтобы исправить данные проверки.
$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 ();
Я надеюсь, что это вам поможет.
sometimes
?