【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のいずれかに記載がある場合)',
        ];
    }

제어계를 긁고 있는 분이라면 상식일지도 모릅니다만, 누군가의 참고가라도 되면 다행입니다.

좋은 웹페이지 즐겨찾기