그런 다음 Laravel 애플리케이션에서 일반적으로 사용하는 편리한 검증 규칙을 소개합니다. 마지막으로, 우리는 우리 자신의 검증 규칙을 작성하고 예상대로 작동하는지 확인하는 방법을 배우게됩니다.
시간과
: 이것은 입력의 숫자 여야한다는 것을 브라우저에 알려줍니다. 대부분의 브라우저에서는 사용자가 숫자 이외의 다른 항목을 입력하지 못하게됩니다. 모바일 장치에서는 일반 키보드 대신 숫자 키보드를 제기 할 수도 있으며, 이는 사용자 경험에 매우 유리합니다.
를 기반으로 데이터를 확인하려는 규칙
가있는 클래스입니다.
컨트롤러 메소드의 코드를 실행하기 전에 Laravel이 요청에서 전달 된 데이터에 대해 자동으로 검증을 실행하기 때문에 컨트롤러 메서드를 깔끔하게 유지하는 좋은 방법을 찾습니다. 따라서 검증기 인스턴스에 대한 메소드를 직접 실행하는 것을 기억할 필요가 없습니다.
메소드가 반환되지 않으므로
:이 메소드는 요청시 실행 해야하는 유효성 검사 규칙을 정의하는 데 사용됩니다. 이 메소드는 요청에 따라 실행 해야하는 규칙 배열을 반환해야합니다. 필드가 설정되어야하고 스트링이어야하며 최대 길이는 100 자이어야 함을 지정합니다. 우리는 또한
확인을 위해 먼저 필드를 포함하는 배열임을 지정합니다.
가 보다 늦고 규칙에 따라 필드의 경우 및
메소드를 사용하여 허용하려는 파일 유형을 지정합니다. 및 메소드를 사용하여 파일이 이미지인지 확인할 수도 있습니다.
예를 들어 앱에 일부 사용자가 있고 경로를 만들어 팀에 배치 할 수 있다고 가정 해 봅시다. 따라서 귀하의 요청에 따라 요청에 전달 된
배열에 전달 된 각 ID가 있는지 확인합니다.
필드가 설정되어 있는지, 이메일이며, 열에서 고유한지 확인합니다. 메소드를 사용하기로 선택한 경우 Laravel 문서 에서이 경고를 읽어야합니다. "사용자 제어 요청 입력 입력을 메소드로 전달해서는 안됩니다. 대신, 대신, 자체 확정 ID 또는 웅변 모델 인스턴스와 같은 고유 한 ID 만 전달해야합니다. 그렇지 않으면 응용 프로그램은 SQL 주입 공격에 취약합니다.
: 확인되는 속성의 이름.
메소드에 검증 로직을 추가 할 수 있습니다.
클로저를 호출합니다. 이로 인해 필드가 확인되지 않습니다. 확인이 통과되면 규칙은 아무것도 수행하지 않으며 응용 프로그램을 계속 사용할 수 있습니다.
우리는 디렉토리에서 라는 새로운 테스트 파일을 만들 것입니다. 테스트에서는 유효한 값을 사용하여 규칙에서 매개 변수로 폐쇄를 전달합니다 (규칙의 내부 검증이 실패하면이 매개 변수가 호출됩니다). 폐쇄가 실행되면 (즉, 검증이 실패) 테스트가 실패해야한다고 지정했습니다. 폐쇄를 실행하지 않고 테스트 종료에 도달하면 규칙이 통과되었음을 알 수 있으며 테스트를 통과하기 위해 간단한 주장
시간 전에
시간을 설정하면 어떻게됩니까? 앱에서이를 처리하는 방법에 따라 다양한 문제가 발생할 수 있습니다.
데이터를 모델에 저장하기 전에 데이터를 검증함으로써 응용 프로그램의 데이터 정확도를 향상시키고 잘못된 데이터가 저장 될 가능성을 줄일 수 있습니다.
예를 들어 <input type="number" min="1" max="10" required>
type="number"
min="1"
max="10"
required
- 를 확인하려는 데이터
- IlluminateSupportFacadesValidator
사이드 참고 : 메소드는 또한 두 가지 선택적 매개 변수를 수용합니다 : make 및 make
data
rules
메소드는 가 발생합니다. Laravel은 요청 유형에 따라이 예외를 자동으로 처리합니다 (앱의 기본 예외 처리를 변경하지 않았다고 가정). 요청이 웹 요청 인 경우 Laravel은 세션에서 오류를 사용하여 사용자를 이전 페이지로 다시 리디렉션하여 표시합니다. 요청이 API 요청 인 경우 Laravel은 다음과 같이 검증 오류의 JSON 표현을 포함하는 A make
messages
메소드가 포함 된 기본 attributes
컨트롤러가 있다고 가정합니다.<input type="number" min="1" max="10" required>
validated
는 profile_picture를 반환합니다. validated
$request->validated('profile_picture')
양식 요청 클래스를 살펴 보겠습니다.
null
AppHttpRequestsUsersStoreUserRequest
use Illuminate\Support\Facades\Validator;
$validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
필드를 설정해야하고 설정 한 기본 비밀번호 확인 규칙을 전달해야합니다 (나중에 비밀번호 확인을 다룰 것입니다).
authorize
403 Forbidden
true
이 섹션에서는 내가 좋아하는 몇 가지 편리한 검증 규칙을 신속하게 소개합니다. 대부분의 사용자는 앱에 유용하다고 생각합니다. <input type="number" min="1" max="10" required>
name
필드가 설정되어 있고 배열임을 정의합니다. 그런 다음 배열의 각 항목 (email
방향 사용)이 users
users.*
필드 ( 방향 사용)가 설정되어야하고 이메일이어야하며 테이블의 name
열에서 고유해야한다는 것을 지정합니다. email
name
users.*.name
규칙을 사용할 수 있습니다 : .
email
users.*.email
규칙을 사용할 수 있습니다.
users
email
및 *
가 오늘보다 후반에 있는지 확인하려고합니다.
필드의 date
를 전달했음을 알 수 있습니다. Laravel 은이 문자열을 함수를 사용하여 유효한 use Illuminate\Support\Facades\Validator;
$validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
date_format
규칙에 매개 변수로 $validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
if ($validator->fails()) {
// 一个或多个字段验证失败。
// 在此处进行处理...
}
opens_at
규칙을 제공합니다.
closes_at
closes_at
웹 개발자로서 우리의 임무는 사용자를 온라인으로 안전하게 도와주는 것입니다. 이를 수행 할 수있는 한 가지 방법은 응용 프로그램에서 비밀번호를 특정 길이의 길이, 특정 문자를 포함하는 등의 양호한 비밀번호 사례를 홍보하는 것입니다. opens_at
opens_at
<input type="number" min="1" max="10" required>
AppProvidersAppServiceProvider
메소드는 파일 크기 단위를 나타내는 다른 접미사를 포함하는 문자열도 허용 할 수 있습니다. 예를 들어, 우리는 또한 사용할 수 있습니다 : boot
Password::defaults()
use Illuminate\Support\Facades\Validator;
$validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
Password::defaults()
AppServiceProvider
$validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
if ($validator->fails()) {
// 一个或多个字段验证失败。
// 在此处进行处理...
}
<input type="number" min="1" max="10" required>
테이블에 존재하는지 확인해야 할 수도 있습니다.
이렇게하려면 규칙을 사용하고 값이 존재하는지 확인하려는 테이블 이름을 전달할 수 있습니다.
user_ids
users
exists
열에 배열에 전달 된 각 ID가 존재하는지 확인하고 사용자의 use Illuminate\Support\Facades\Validator;
$validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
user_ids
규칙을 제공합니다. users
예를 들어 테이블이 있고 필드가 고유한지 확인하려고합니다. id
규칙을 사용할 수 있습니다 :
where
exists
테이블에 행이 있으므로 확인이 실패합니다. 이 경우 고유성을 확인할 때 $validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
if ($validator->fails()) {
// 一个或多个字段验证失败。
// 在此处进行处理...
}
ignore
규칙에 추가 unique
where
고마워요, 이것은 Laravel에서도 쉽게 할 수 있습니다! where
<input type="number" min="1" max="10" required>
이것은 우리를 위해 새
파일을 만들어야합니다 :
use Illuminate\Support\Facades\Validator;
$validator = Validator::make(
data: [
'title' => 'Blog Post',
'description' => 'Blog post description',
],
rules: [
'title' => ['required', 'string', 'max:100'],
'description' => ['required', 'string', 'max:250'],
]
);
이 작업을 수행하는 방법을 이해하려면 이전 섹션에서 만든 Palindrome 규칙을 테스트하는 방법을 살펴 보겠습니다.
tests/Unit/Rules
를 추가 할 수 있습니다. PalindromeTest.php
<input type="number" min="1" max="10" required>
위 내용은 Laravel 검증에 대한 궁극적 인 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!