2つの基準を満たしている場合のみ、必要に応じて配列内のフィールドを検証するにはどうすればよいですか?Laravel 5.4検証 - 配列内の2つのフィールドに基づいて配列内での検証が必要
私は、以下のサンプルデータを持っている、と私はcandidate_typeが2または3とis_present_companyがゼロである場合にのみエンドフィールドを検証します。
Array
(
[candidate_type] => 3,
[experience] => Array(
[0] => Array(
[job_title] => 'test title'
[company] => 'test company'
[start] => 'test start'
[end] => 'test end'
[is_present_company] => 1
[location_country] =>
)
)
)
これは私のLaravelはコード検証です:この問題に対処するために
return Validator::make($data, [
'experience.*.job_title' => 'required_if:candidate_type,1,2',
'experience.*.company' => 'required_if:candidate_type,1,2',
'experience.*.start' => 'required_if:candidate_type,1,2|date',
'experience.*.end' => 'required_if:candidate_type,1,2|date',
'experience.*.location_country' => 'required_if:candidate_type,1,2',
]);
を、私は別に代わりに配列フィールドを検証しました。
$hasExperienceError = false;
if (!empty($data['candidate_type']) && in_array($data['candidate_type'], [1, 2])) {
if (empty($data['experience']) || count($data['experience']) < 1) {
// $validator->errors()->add('experience', 'Please provide at least one experience');
} else {
foreach($data['experience'] as $key => $z) {
$xv = Validator::make($z, [
'job_title' => 'required',
'company' => 'required',
'start' => 'required|date',
'end' => 'required_if:is_present_company,1|date',
'location_country' => 'required',
]);
if ($xv->fails()) {
$hasExperienceError = true;
}
}
}
}
こんにちは@sandeesh。入力のおかげで。私はこれがより現実的な方法だろうと思う。私はあなたのアドバイスに従って、 "手動で"配列を検証していました。 –