【Laravel】바리데이션(조건부 필수 항목)
소개
Laravel에서 필수 항목의 유효성 검사 설정에서,
「여기의 항목에 값이 있으면, 이쪽의 항목을 필수로 하고 싶다」
뭐라고 생각했을 때에 편리한 바리데이션이 있었기 때문에, 비망록으로서 남깁니다.
개발 환경
php 7.4.7
Laravel 8.16.1
하고 싶었던 일
항목 A, B, C 중 하나에 값이 하나라면 모두 필수 항목으로 만들고 싶습니다.
조건부 required 유형
· required_if
=> "지정된 항목"이 "지정된 값"이면 입력 필수
· required_unless
=> "지정된 항목"이 "지정된 값"이 아니면 입력 필수
· required_with
=> "지정된 항목"이 "어느 하나라도 기재"되어 있으면 입력 필수
· required_with_all
=> "지정된 항목"이 "모두 나열"되어 있으면 입력 필수
· required_without
=> "지정한 항목"이 "그것은 하나라도 미기입"이면 입력 필수
· required_without_all
=> "지정된 항목"이 "모두 미기입"이면 입력 필수
사용법
이번에는 'required_with'를 적용할 수 있을 것 같습니다!
예제는 Requests에서 유효성 검사를 설정합니다.
Requests/Test.php
public static function rules()
{
$validate = [
'item_a' => ['required_with:item_b, item_c'],
'item_b' => ['required_with:item_a, item_c'],
'item_c' => ['required_with:item_a ,item_b']
];
return $validate;
}
문제없이 밸리데이션이 부여된 것 같습니다.
데모
끝에
지금까지 if를 사용하여 입력이 있으면 필수라는 코드를 쓰고 있었습니다만, 발견했을 때는 경악했습니다.
아니, 모르는 것뿐입니다 ....
여담입니다만 데모와 같이 밸리데이션 메세지를 변경하는 경우는 아래와 같이 합니다.
Requests/Test.php
public function attributes()
{
return [
'item_a' => '項目A',
'item_b' => '項目B',
'item_c' => '項目C',
];
}
public function messages()
{
return [
'required_with' => ':attributeは必須です。(:valuesのいずれかに記載がある場合)',
];
}
제어계를 긁고 있는 분이라면 상식일지도 모릅니다만, 누군가의 참고가라도 되면 다행입니다.
Reference
이 문제에 관하여(【Laravel】바리데이션(조건부 필수 항목)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/anomeme/items/44f0505284c5224c2591텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)