최신판 |
당신의 편집 |
639번째 줄: |
639번째 줄: |
|
| |
|
| ===추가 유효성 검증 수행=== | | ===추가 유효성 검증 수행=== |
| 초기 검증이 완료된 후 추가 검증이 필요할 때가 있습니다. 이를 위해 validator의 <code>after</code> 메소드를 사용할 수 있습니다. <code>after</code> 메소드는 클로저나 호출가능(callable) 배열을 인자로 받아, 검증이 완료된 후 호출됩니다. 주어진 호출가능 객체들은 <code>Illuminate\Validation\Validator</code> 인스턴스를 전달받아, 필요한 경우 추가적인 오류 메시지를 발생시킬 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| use Illuminate\Support\Facades\Validator;
| |
|
| |
| $validator = Validator::make(/* ... */);
| |
|
| |
| $validator->after(function ($validator) {
| |
| if ($this->somethingElseIsInvalid()) {
| |
| $validator->errors()->add(
| |
| 'field', 'Something is wrong with this field!'
| |
| );
| |
| }
| |
| });
| |
|
| |
| if ($validator->fails()) {
| |
| // ...
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 언급했듯이, <code>after</code> 메소드는 호출가능 객체의 배열도 받을 수 있습니다. 이는 "검증 후" 로직이 호출가능 클래스에 캡슐화되어 있을 때 특히 유용합니다. 이 클래스들은 <code>__invoke</code> 메소드를 통해 <code>Illuminate\Validation.Validator</code> 인스턴스를 전달받습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| use App\Validation\ValidateShippingTime;
| |
| use App\Validation\ValidateUserStatus;
| |
|
| |
| $validator->after([
| |
| new ValidateUserStatus,
| |
| new ValidateShippingTime,
| |
| function ($validator) {
| |
| // ...
| |
| },
| |
| ]);
| |
| </syntaxhighlight>
| |
|
| |
|
| ==유효성 검증된 입력 다루기== | | ==유효성 검증된 입력 다루기== |
| 폼 요청이나 수동으로 생성한 유효성 검증기 인스턴스를 사용하여 들어오는 요청 데이터를 유효성 검증한 후, 실제로 유효성 검증을 거친 요청 데이터를 조회하고 싶을 수 있습니다. 이는 여러 가지 방법으로 가능합니다. 먼저, 폼 요청이나 유효성 검증기 인스턴스에서 <code>validated</code> 메소드를 호출할 수 있습니다. 이 메소드는 유효성 검증을 거친 데이터를 배열 형태로 반환합니다:
| | ==오류 메시지 다루기== |
| | | ===언어 파일에서 사용자 정의 메시지 지정=== |
| <syntaxhighlight lang='php'>
| |
| $validated = $request->validated();
| |
|
| |
| $validated = $validator->validated();
| |
| </syntaxhighlight>
| |
| | |
| 또는, 폼 요청이나 유효성 검증기 인스턴스에서 <code>safe</code> 메소드를 호출할 수 있습니다. 이 메소드는 <code>Illuminate\Support\ValidatedInput</code> 인스턴스를 반환합니다. 이 객체는 <code>only</code>, <code>except</code>, <code>all</code> 메소드를 노출하여 유효성 검증을 거친 데이터의 일부 또는 전체 배열을 조회할 수 있습니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| $validated = $request->safe()->only(['name', 'email']);
| |
|
| |
| $validated = $request->safe()->except(['name', 'email']);
| |
|
| |
| $validated = $request->safe()->all();
| |
| </syntaxhighlight>
| |
| | |
| 또한, <code>Illuminate\Support\ValidatedInput</code> 인스턴스는 배열처럼 반복할 수 있고 접근할 수 있습니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| // 유효성 검증된 데이터를 반복할 수 있습니다...
| |
| foreach ($request->safe() as $key => $value) {
| |
| // ...
| |
| }
| |
|
| |
| // 유효성 검증된 데이터에 배열처럼 접근할 수 있습니다...
| |
| $validated = $request->safe();
| |
|
| |
| $email = $validated['email'];
| |
| </syntaxhighlight>
| |
| | |
| 유효성 검증된 데이터에 추가 필드를 추가하고 싶다면 <code>merge</code> 메소드를 호출할 수 있습니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| $validated = $request->safe()->merge(['name' => 'Taylor Otwell']);
| |
| </syntaxhighlight>
| |
| | |
| 유효성 검증된 데이터를 콜렉션 인스턴스로 조회하고 싶다면 <code>collect</code> 메소드를 호출할 수 있습니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| $collection = $request->safe()->collect();
| |
| </syntaxhighlight>
| |
| | |
| ==오류 메시지 작업하기==
| |
| <code>Validator</code> 인스턴스에서 <code>errors</code> 메소드를 호출한 후에는 다양하고 편리한 메소드가 포함된 <code>Illuminate\Support\MessageBag</code> 인스턴스를 받게 됩니다. 모든 뷰에서 자동으로 제공되는 <code>$errors</code> 변수도 <code>MessageBag</code> 클래스의 인스턴스입니다.
| |
| | |
| ;필드의 첫 번째 오류 메시지 가져오기
| |
| 주어진 필드에 대한 첫 번째 오류 메시지를 가져오려면 <code>first</code> 메소드를 사용합니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| $errors = $validator->errors();
| |
|
| |
| echo $errors->first('email');
| |
| </syntaxhighlight>
| |
| | |
| ;필드의 모든 오류 메시지 가져오기
| |
| 주어진 필드에 대한 모든 메시지의 배열을 가져와야 하는 경우, <code>get</code> 메소드를 사용합니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| foreach ($errors->get('email') as $message) {
| |
| // ...
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| 배열 형식의 폼 필드를 검증하는 경우, <code>*</code> 문자를 사용하여 각 배열 요소에 대한 모든 메시지를 가져올 수 있습니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| foreach ($errors->get('attachments.*') as $message) {
| |
| // ...
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ;모든 필드의 모든 오류 메시지 가져오기
| |
| 모든 필드의 모든 메시지 배열을 가져오려면 <code>all</code> 메소드를 사용합니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| foreach ($errors->all() as $message) {
| |
| // ...
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ;필드에 대한 메시지가 존재하는지 확인하기
| |
| <code>has</code> 메소드를 사용하여 주어진 필드에 대한 오류 메시지가 존재하는지 확인할 수 있습니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| if ($errors->has('email')) {
| |
| // ...
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ===언어 파일에 커스텀 메시지 지정===
| |
| Laravel의 내장된 검증 규칙은 각각 애플리케이션의 <code>lang/en/validation.php</code> 파일에 위치한 오류 메시지를 가지고 있습니다. 애플리케이션에 <code>lang</code> 디렉토리가 없을 경우, <code>lang:publish</code> Artisan 명령어를 사용하여 Laravel이 해당 디렉토리를 생성하도록 지시할 수 있습니다.
| |
| | |
| <code>lang/en/validation.php</code> 파일 내에서 각 검증 규칙에 대한 번역 항목을 찾을 수 있습니다. 애플리케이션의 필요에 따라 이러한 메시지를 자유롭게 변경하거나 수정할 수 있습니다.
| |
| | |
| 또한, 이 파일을 다른 언어 디렉터리로 복사하여 애플리케이션의 언어에 맞게 메시지를 번역할 수 있습니다. Laravel 현지화에 대해 더 자세히 알고 싶다면, 전체 [[Laravel 현지화|현지화 문서]]를 참조하십시오.
| |
| | |
| {{WARNING}}
| |
| 기본적으로 Laravel 애플리케이션 스켈레톤에는 <code>lang</code> 디렉토리가 포함되어 있지 않습니다. Laravel의 언어 파일을 커스터마이즈하려면 <code>lang:publish</code> Artisan 명령어를 통해 이를 게시할 수 있습니다.
| |
| {{/WARNING}}
| |
| | |
| ;특정 속성에 대한 커스텀 메시지
| |
| 애플리케이션의 검증 언어 파일에서 특정 속성과 규칙 조합에 사용되는 오류 메시지를 사용자 지정할 수 있습니다. 이를 위해 애플리케이션의 <code>lang/xx/validation.php</code> 언어 파일의 <code>custom</code> 배열에 메시지 커스터마이징을 추가하면 됩니다:
| |
| | |
| <syntaxhighlight lang='php'>
| |
| 'custom' => [
| |
| 'email' => [
| |
| 'required' => 'We need to know your email address!',
| |
| 'max' => 'Your email address is too long!'
| |
| ],
| |
| ],
| |
| </syntaxhighlight>
| |
| | |
| ===언어 파일에서 속성 지정=== | | ===언어 파일에서 속성 지정=== |
| Laravel의 많은 기본 오류 메시지에는 <code>:attribute</code> 자리표시자가 포함되어 있으며, 이는 유효성 검증 중인 필드 또는 속성의 이름으로 대체됩니다. 유효성 검증 메시지에서 <code>:attribute</code> 부분을 커스텀 값으로 대체하려면 <code>lang/xx/validation.php</code> 언어 파일의 <code>attributes</code> 배열에 커스텀 속성 이름을 지정할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'attributes' => [
| |
| 'email' => 'email address',
| |
| ],
| |
| </syntaxhighlight>
| |
|
| |
| {{WARNING}}
| |
| 기본적으로 Laravel 애플리케이션 스켈레톤에는 <code>lang</code> 디렉토리가 포함되어 있지 않습니다. Laravel의 언어 파일을 커스터마이즈하려면 <code>lang:publish</code> Artisan 명령어를 통해 이를 게시할 수 있습니다.
| |
| {{/WARNING}}
| |
|
| |
| ===언어 파일에서 값 지정=== | | ===언어 파일에서 값 지정=== |
| Laravel의 일부 빌트인 유효성 검증 규칙 오류 메시지에는 현재 요청 속성의 값을 대체하는 <code>:value</code> 자리표시자가 포함되어 있습니다. 하지만 가끔은 유효성 검증 메시지의 <code>:value</code> 부분을 값의 커스텀 표현으로 대체해야 할 필요가 있습니다. 예를 들어, 다음 규칙을 생각해보세요. 이 규칙은 <code>payment_type</code>이 <code>cc</code>일 경우 신용카드 번호가 필수임을 지정합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| Validator::make($request->all(), [
| |
| 'credit_card_number' => 'required_if:payment_type,cc'
| |
| ]);
| |
| </syntaxhighlight>
| |
|
| |
| 이 유효성 검증 규칙이 실패하면 다음과 같은 오류 메시지가 생성됩니다:
| |
|
| |
| <syntaxhighlight lang='text'>
| |
| The credit card number field is required when payment type is cc.
| |
| </syntaxhighlight>
| |
|
| |
| payment_type 값으로 <code>cc</code>를 표시하는 대신, <code>lang/xx/validation.php</code> 언어 파일에 <code>values</code> 배열을 정의하여 더 사용자 친화적인 값 표현을 지정할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'values' => [
| |
| 'payment_type' => [
| |
| 'cc' => 'credit card'
| |
| ],
| |
| ],
| |
| </syntaxhighlight>
| |
|
| |
| {{WARNING}}
| |
| 기본적으로 Laravel 애플리케이션 스켈레톤에는 <code>lang</code> 디렉토리가 포함되어 있지 않습니다. Laravel의 언어 파일을 사용자 정의하려면 <code>lang:publish</code> Artisan 명령어를 통해 이를 게시할 수 있습니다.
| |
| {{/WARNING}}
| |
|
| |
| 이 값을 정의한 후, 유효성 검증 규칙은 다음과 같은 오류 메시지를 생성할 것입니다:
| |
|
| |
| <syntaxhighlight lang='text'>
| |
| The credit card number field is required when payment type is credit card.
| |
| </syntaxhighlight>
| |
|
| |
| ==사용가능한 유효성 검증 규칙== | | ==사용가능한 유효성 검증 규칙== |
| 아래는 사용가능한 모든 검증 규칙과 그 기능 목록입니다:
| |
|
| |
| {{z컬럼3|
| |
| * Accepted
| |
| * Accepted If
| |
| * Active URL
| |
| * After (Date)
| |
| * After Or Equal (Date)
| |
| * Alpha
| |
| * Alpha Dash
| |
| * Alpha Numeric
| |
| * Array
| |
| * Ascii
| |
| * Bail
| |
| * Before (Date)
| |
| * Before Or Equal (Date)
| |
| * Between
| |
| * Boolean
| |
| * Confirmed
| |
| * Contains
| |
| * Current Password
| |
| * Date
| |
| * Date Equals
| |
| * Date Format
| |
| * Decimal
| |
| * Declined
| |
| * Declined If
| |
| * Different
| |
| * Digits
| |
| * Digits Between
| |
| * Dimensions (Image Files)
| |
| * Distinct
| |
| * Doesnt Start With
| |
| * Doesnt End With
| |
| * Email
| |
| * Ends With
| |
| * Enum
| |
| * Exclude
| |
| * Exclude If
| |
| * Exclude Unless
| |
| * Exclude With
| |
| * Exclude Without
| |
| * Exists (Database)
| |
| * Extensions
| |
| * File
| |
| * Filled
| |
| * Greater Than
| |
| * Greater Than Or Equal
| |
| * Hex Color
| |
| * Image (File)
| |
| * In
| |
| * In Array
| |
| * Integer
| |
| * IP Address
| |
| * JSON
| |
| * Less Than
| |
| * Less Than Or Equal
| |
| * List
| |
| * Lowercase
| |
| * MAC Address
| |
| * Max
| |
| * Max Digits
| |
| * MIME Types
| |
| * MIME Type By File Extension
| |
| * Min
| |
| * Min Digits
| |
| * Missing
| |
| * Missing If
| |
| * Missing Unless
| |
| * Missing With
| |
| * Missing With All
| |
| * Multiple Of
| |
| * Not In
| |
| * Not Regex
| |
| * Nullable
| |
| * Numeric
| |
| * Present
| |
| * Present If
| |
| * Present Unless
| |
| * Present With
| |
| * Present With All
| |
| * Prohibited
| |
| * Prohibited If
| |
| * Prohibited Unless
| |
| * Prohibits
| |
| * Regular Expression
| |
| * Required
| |
| * Required If
| |
| * Required If Accepted
| |
| * Required If Declined
| |
| * Required Unless
| |
| * Required With
| |
| * Required With All
| |
| * Required Without
| |
| * Required Without All
| |
| * Required Array Keys
| |
| * Same
| |
| * Size
| |
| * Sometimes
| |
| * Starts With
| |
| * String
| |
| * Timezone
| |
| * Unique (Database)
| |
| * Uppercase
| |
| * URL
| |
| * ULID
| |
| * UUID
| |
| }}
| |
|
| |
| ;accepted
| |
| 검증 중인 필드는 <code>"yes"</code>, <code>"on"</code>, <code>1</code>, <code>"1"</code>, <code>true</code>, <code>"true"</code> 중 하나여야 합니다. 이는 "이용 약관" 동의와 같은 필드를 검증하는 데 유용합니다.
| |
|
| |
| ;<nowiki>accepted_if:anotherfield,value,...</nowiki>
| |
| 검증 중인 필드는 지정된 값과 일치하는 다른 필드가 있는 경우 <code>"yes"</code>, <code>"on"</code>, <code>1</code>, <code>"1"</code>, <code>true</code>, <code>"true"</code> 중 하나여야 합니다. 이는 "이용 약관" 동의와 같은 필드를 검증하는 데 유용합니다.
| |
|
| |
| ;active_url
| |
| 검증 중인 필드는 <code>dns_get_record</code> PHP 함수에 따라 유효한 A 또는 AAAA 레코드를 가져야 합니다. 제공된 URL의 호스트 이름은 <code>parse_url</code> PHP 함수를 사용하여 추출된 후 <code>dns_get_record</code>로 전달됩니다.
| |
|
| |
| ;<nowiki>after:</nowiki>''date''
| |
| 검증 대상 필드는 주어진 날짜 이후의 값이어야 합니다. 날짜는 <code>strtotime</code> PHP 함수를 통해 유효한 <code>DateTime</code> 인스턴스로 변환됩니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'start_date' => 'required|date|after:tomorrow'
| |
| </syntaxhighlight>
| |
|
| |
| 날짜 문자열을 <code>strtotime</code> 함수로 평가하는 대신, 다른 필드를 지정하여 날짜를 비교할 수도 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'finish_date' => 'required|date|after:start_date'
| |
| </syntaxhighlight>
| |
|
| |
| ;<nowiki>after_or_equal:</nowiki>''date''
| |
| 검증 대상 필드는 주어진 날짜 이후 또는 같은 날짜의 값이어야 합니다. 자세한 내용은 after 규칙을 참조하십시오.
| |
|
| |
| ;<nowiki>alpha</nowiki>
| |
| 검증 대상 필드는 <code>\p{L}</code>와 <code>\p{M}</code>에 포함된 유니코드 알파벳 문자로만 구성되어야 합니다.
| |
|
| |
| 이 검증 규칙을 ASCII 범위 (<code>a-z</code>와 <code>A-Z</code>)로 제한하려면, <code>ascii</code> 옵션을 제공할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'username' => 'alpha:ascii',
| |
| </syntaxhighlight>
| |
|
| |
| ;alpha_dash
| |
| 유효성 검사 필드에는 Unicode 알파숫자 문자<code>\p{L}</code>, <code>\p{M}</code>, <code>\p{N})</code>, ASCII 대시(<code>-</code>)와 ASCII 밑줄(<code>_</code>)만 포함되어야 합니다.
| |
|
| |
| 이 유효성 검증 규칙을 ASCII 범위의 문자(<code>a-z</code>와 <code>A-Z</code>)로 제한하려면 유효성 검증 규칙에 <code>ascii</code> 옵션을 제공할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'username' => 'alpha_dash:ascii',
| |
| </syntaxhighlight>
| |
|
| |
| ;alpha_num
| |
| 유효성 검증 필드에는 Unicode 알파숫자 문자 <code>\p{L}</code>, <code>\p{M}</code>, <code>\p{N}</code>만 포함되어야 합니다.
| |
|
| |
| 이 유효성 검증 규칙을 ASCII 범위의 문자(<code>a-z</code>와 <code>A-Z</code>)로 제한하려면 유효성 검증 규칙에 <code>ascii</code> 옵션을 제공할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'username' => 'alpha_num:ascii',
| |
| </syntaxhighlight>
| |
|
| |
| ;array
| |
| 유효성 검증 필드는 PHP <code>array</code>이어야 합니다.
| |
|
| |
| <code>array</code> 규칙에 추가 값이 제공되면 입력 배열의 각 키는 규칙에 제공된 값 목록에 존재해야 합니다. 다음 예제에서 입력 배열의 <code>admin</code> 키는 <code>array</code> 규칙에 제공된 값 목록에 포함되지 않으므로 유효하지 않습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| use Illuminate\Support\Facades\Validator;
| |
|
| |
| $input = [
| |
| 'user' => [
| |
| 'name' => 'Taylor Otwell',
| |
| 'username' => 'taylorotwell',
| |
| 'admin' => true,
| |
| ],
| |
| ];
| |
|
| |
| Validator::make($input, [
| |
| 'user' => 'array:name,username',
| |
| ]);
| |
| </syntaxhighlight>
| |
|
| |
| 일반적으로 배열 내에 존재할 수 있는 배열 키를 항상 지정해야 합니다.
| |
|
| |
| ;ascii
| |
| 유효성 검증 필드는 완전히 7비트 ASCII 문자로 구성되어야 합니다.
| |
|
| |
| ;bail
| |
| 해당 필드에 대해 유효성 검증 실패가 발생하면 첫 번째 실패 후에 유효성 검증 규칙의 실행을 중단합니다.
| |
|
| |
| <code>bail</code> 규칙은 특정 필드에서 유효성 검증 실패가 발생하면 해당 필드의 유효성 검증을 중단하지만, <code>stopOnFirstFailure</code> 메소드는 단일 유효성 검증 실패가 발생하면 모든 속성의 유효성 검증을 중단하도록 유효성 검증기에 지시합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| if ($validator->stopOnFirstFailure()->fails()) {
| |
| // ...
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| ;before<nowiki>:</nowiki>''date''
| |
| 해당 필드의 값은 지정된 날짜 이전이어야 합니다. 날짜는 PHP <code>strtotime</code> 함수로 전달되어 유효한 <code>DateTime</code> 인스턴스로 변환됩니다. 또한 <code>after</code> 규칙과 마찬가지로 유효성 검증 중인 다른 필드의 이름을 <code>date</code> 값으로 제공할 수 있습니다.
| |
|
| |
| ;before_or_equal<nowiki>:</nowiki>''date''
| |
| 해당 필드의 값은 지정된 날짜 이전이거나 동일해야 합니다. 날짜는 PHP <code>strtotime</code> 함수로 전달되어 유효한 <code>DateTime</code> 인스턴스로 변환됩니다. 또한 <code>after</code> 규칙과 마찬가지로 유효성 검증 중인 다른 필드의 이름을 <code>date</code> 값으로 제공할 수 있습니다.
| |
|
| |
| ;between<nowiki>:</nowiki>''min,max''
| |
| 해당 필드는 지정된 최소값과 최대값(포함) 사이의 크기를 가져야 합니다. 문자열, 숫자, 배열, 파일은 <code>size</code> 규칙과 동일한 방식으로 평가됩니다.
| |
|
| |
| ;boolean
| |
| 해당 필드는 boolean으로 변환될 수 있어야 합니다. 허용되는 입력 값은 <code>true</code>, <code>false</code>, <code>1</code>, <code>0</code>, <code>"1"</code>, <code>"0"</code>입니다.
| |
|
| |
| ;confirmed
| |
| 검증 대상 필드는 <code>{field}_confirmation</code> 필드와 일치해야 합니다. 예를 들어, 검증 대상 필드가 <code>password</code>인 경우, 입력 값에 <code>password_confirmation</code> 필드가 있어야 합니다.
| |
|
| |
| ;contains<nowiki>:</nowiki>''foo,bar,...''
| |
| 검증 대상 필드는 주어진 매개변수 값을 모두 포함하는 배열이어야 합니다.
| |
|
| |
| ;current_password
| |
| 검증 대상 필드는 인증된 사용자의 패스워드와 일치해야 합니다. 규칙의 첫 번째 매개변수를 사용하여 [[Laravel 인증|인증 가드]]를 지정할 수 있습니다.
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'password' => 'current_password:api'
| |
| </syntaxhighlight>
| |
|
| |
| ;date
| |
| 검증 대상 필드는 <code>strtotime</code> PHP 함수에 따라 유효한 절대(non-relative) 날짜여야 합니다.
| |
|
| |
| ;date_equals<nowiki>:</nowiki>''date''
| |
| 검증 대상 필드는 주어진 날짜와 같아야 합니다. 날짜는 PHP <code>strtotime</code> 함수로 전달되어 유효한 <code>DateTime</code> 인스턴스로 변환됩니다.
| |
|
| |
| ;date_format<nowiki>:</nowiki>''format,...''
| |
| 검증 대상 필드는 주어진 형식 중 하나와 일치해야 합니다. 필드를 검증할 때 <code>date</code> 또는 <code>date_format</code> 중 하나를 사용해야 합니다. 이 검증 규칙은 [[PHP DateTime 클래스|PHP의 DateTime 클래스]]가 지원하는 모든 형식을 지원합니다.
| |
|
| |
| ;declined
| |
| 검증되는 필드는 <code>"no"</code>, <code>"off"</code>, <code>0</code>, <code>"0"</code>, <code>false</code>, <code>"false"</code> 여야 합니다.
| |
|
| |
| ;declined_if<nowiki>:</nowiki>''anotherfield,value,...''
| |
| 다른 필드의 값이 지정된 값과 같을 경우, 검증되는 필드는 <code>"no"</code>, <code>"off"</code>, <code>0</code>, <code>"0"</code>, <code>false</code>, <code>"false"</code> 여야 합니다.
| |
|
| |
| ;different<nowiki>:</nowiki>''field''
| |
| 검증되는 필드는 지정된 다른 필드와 다른 값을 가져야 합니다.
| |
|
| |
| ;digits<nowiki>:</nowiki>''value''
| |
| 검증되는 정수는 정확히 지정된 길이의 숫자여야 합니다.
| |
|
| |
| ;digits_between<nowiki>:</nowiki>''min,max''
| |
| 검증되는 정수는 지정된 최소 및 최대 길이 사이의 숫자여야 합니다.
| |
|
| |
| ;dimensions
| |
| 검증되는 파일은 지정된 차원 제약조건을 충족하는 이미지여야 합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'avatar' => 'dimensions:min_width=100,min_height=200'
| |
| </syntaxhighlight>
| |
|
| |
| 사용가능한 제약조건은 다음과 같습니다: ''min_width, max_width, min_height, max_height, width, height, ratio''.
| |
|
| |
| 비율(ratio) 제약조건은 너비를 높이로 나눈 값으로 표현해야 합니다. 이는 <code>3/2</code>와 같은 분수 또는 <code>1.5</code>와 같은 부동소수점 수로 지정할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| 'avatar' => 'dimensions:ratio=3/2'
| |
| </syntaxhighlight>
| |
|
| |
| 이 규칙은 여러 인수를 필요로 하므로 <code>Rule::dimensions</code> 메소드를 사용하여 규칙을 유창하게 구성할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| use Illuminate\Support\Facades\Validator;
| |
| use Illuminate\Validation\Rule;
| |
|
| |
| Validator::make($data, [
| |
| 'avatar' => [
| |
| 'required',
| |
| Rule::dimensions()->maxWidth(1000)->maxHeight(500)->ratio(3 / 2),
| |
| ],
| |
| ]);
| |
| </syntaxhighlight>
| |
|
| |
| ==조건부 규칙 추가== | | ==조건부 규칙 추가== |
| ==배열 유효성 검증== | | ==배열 유효성 검증== |