Laravel validate



* 다국어 에러 메시지 지원
resources/lang/ko/validation.php - 한국어

    - 속성 값(:attribute) 변경
'attributes' => [
        'user_id' => '아이디',
        'password' => '패스워드',
    ],


//============================================
    protected function validateLogin( $request)
    {
        //dd("validateLogin", $request);
        $validator = Validator::make($request, [
            'user_id'  => 'required|string',
            'password' => 'required|string',
        ],[
            'user_id.required' => "아이디를 입력해주세요.",           
            'password.required' => "패스워드를 입력해주세요.",
        ]);
        return $validator;
    }

    //결과값 처리
    $error1 = $validator->errors()->all();       
    foreach($error1 as $err){       }


//=========================
* 사용자(커스텀) 검사 조건 추가

class AppServiceProvider
    - app/Providers/AppServiceProvider.php   
    boot()
함수에 추가


    Validator::extend('pass', function ($attribute, $value, $parameters, $validator) {
            return preg_match( "#(?=.*[a-zA-Z])(?=.*[0-9])#", $value ) ;           
        });


    - 에러 메시지 추가
resource/lang/ko/validation.php
    'pass'              => ':attribute 형식이 올바르지 않습니다.',




//============================================
https://laravel.kr/docs/5.5/validation



* sometimes - 조건부 검사
$v = Validator::make($data, [
    'email' => 'sometimes|required|email',

    -  $data 배열에 email 필드가 존재할 경우


* bail  - 첫번째 유효성 검사가 실패하면 중지하기



//=============
* 수치
between:min,max  -  min 과 _max_의 사이의 값

max:value - value 보다 (길이가) 작거나 같음
min:value - value 보다 (길이가) 크거나 같음
size:value - value_와 일치하는 크기


//=============
* 문자
alpha -  영문, 한글 (숫자나 기호가 아닌 글자)
alpha_dash - alpha 와 dash(-), underscore(_)
alpha_num - alpha 와 숫자

digits:value - 숫자
digits_between:min,max - _min_과 max 사이의 길이

regex:pattern  - 정규식


//====================
* 판별

boolean  -  true, false, 1, 0, "1", "0"
accepted -  yes, on, 1, 또는 _true_

integer - 정수
numeric - 숫자
string - 문자열
     null 인것을 허용하려면 nullable 을 추가

email - 이메일 주소 형식
file - 업로드된 파일
url - URL 형식

ip - IP 주소
ipv4  - IPv4 주소
ipv6  - IPv6 주소
json  - JSON 문자열


//==================
* 파일 형식

image - 이미지 파일(jpeg, png, bmp, gif, svg)

dimensions - 이미지 크기
https://laravel.kr/docs/5.5/validation#dimensions
    min_width, max_width, min_height, max_height, width, height, ratio
    예) 'avatar' => 'dimensions:min_width=100,min_height=200'

mimetypes:text/plain,...  - MIME 타입들 중 하나와 일치
    예) 'video' => 'mimetypes:video/avi,video/mpeg,video/quicktime'

mimes:foo,bar,...
    예) 'photo' => 'mimes:jpeg,bmp,png'


in:foo,bar,... - 리스트에 포함되는가?

not_in:foo,bar,...
    예)
    'toppings' => [
        'required',
        Rule::notIn(['sprinkles', 'cherries']),
    ],


//====================
required  - 값이 존재
https://laravel.kr/docs/5.5/validation#required

required_if:anotherfield,value,...
 _anotherfield_의 값이 _value_중의 하나와 일치한다면, 해당 필드는 존재하고 비어있지 않아야 합니다.

required_unless:anotherfield,value,...
required_with:foo,bar,...
required_with_all:foo,bar,...
required_without:foo,bar,...
required_without_all:foo,bar,...
same:field  - 필드의 값이 주어진 _field_의 값과 일치


//=============
* 데이터베이스(DB)
exists:table,column  - DB 에 존재 여부
unique:table,column,except,idColumn - DB에서 유일한 값
https://laravel.kr/docs/5.5/validation#unique:%3Cem%3Etable%3C/em%3E,%3Cem%3Ecolumn%3C/em%3E,%3Cem%3Eexcept%3C/em%3E,%3Cem%3EidColumn%3C/em%3E


//=============
* 날짜
after:date
after_or_equal:date

before:date
before_or_equal:date

date - strtotime()  PHP 함수에서 인식
date_equals:date
date_format:format



//=============
* 배열
array - PHP 배열



//=========
* 기타
confirmed  - 체크여부
    - 사용예) foo 필드가 있고, foo 필드 값을 검증한 foo_comfirmation 이 있는 경우
    foo_comfirmation을 체크한다.

//
distinct  - 배열안의 다른 값과 중복되지 않아야 합니다.  ??

//
filled - 값이 존재

Posted by 코덴스

댓글을 달아 주세요