Validation
Khởi Tạo Xác Thực
Để xác thực cho form bạn cần thêm quy tắc xác thực vào field khi khởi tạo,
Quy tắc xác thực được tạo bằng đối tượng SkillDo\Validate\Rule:
use SkillDo\Validate\Rule;
$form = new Form();
$form->text('myField', [
'label' => 'My Field',
'validations' => Rule::make()->notEmpty()
]);
Xác Thực
Xác thực bằng form
Để xác thực các request của một form đã hợp lệ hay chưa bạn sử dụng phương thức validate của class SkillDo\Http\Request.
Phương thức validate của request nhận vào một đối số có thể là đối tượng Form, FormAdmin hoặc SkillDo\Validate\Rule và trả về đối tượng SkillDo\Validate\Validate
use SkillDo\Validate\Rule;
//Tạo form
$form = new Form();
$form->text('myField', [
'label' => 'My Field',
'validations' => Rule::make()->notEmpty()
]);
//Xác thực
$request = request();
$validate = $request->validate($form);
Để kiểm tra request đã hợp lệ hay chưa bạn có thể sử dụng phương thức fails, nếu trả về true tức có request không hợp lệ, hoặc passes (ngược lại với fails)
$validate = $request->validate($form);
if($validate->fails()) {
//todo fail validation
}
Để lấy danh sách message lỗi khi xác thực bạn sử dụng phương thức error, phương thức sẽ trả về một đối tượng là SKD_Error
$validate = $request->validate($form);
if($validate->fails()) {
$errors = $validate->errors();
}
Xác thực không form
Hoặc bạn có thể tạo validate mà không cần form bằng cách sử dụng phương thức validate của SkillDo\Http\Request hoặc make của SkillDo\Validate\Validate.
use SkillDo\Validate\Validate;
use SkillDo\Validate\Rule;
$request = request();
$validate = $request->validate([
'username' => Rule::make('Tên đăng nhập')->notEmpty(),
'password' => Rule::make('Mật khẩu')->notEmpty(),
]);
if($validate->fails()) {
$errors = $validate->errors();
}
hoặc
use SkillDo\Validate\Validate;
use SkillDo\Validate\Rule;
$request = request();
$validate = Validate::make($request->all(), [
'username' => Rule::make('Tên đăng nhập')->notEmpty(),
'password' => Rule::make('Mật khẩu')->notEmpty(),
])->validate();
if($validate->fails()) {
$errors = $validate->errors();
}
Các Quy Tắc Xác Thực
alpha
Trường được xác thực phải hoàn toàn là các ký tự chữ cái Unicode.
Rule::make()->alpha();
alphaDash
Trường được xác thực phải hoàn toàn là các ký tự chữ (a-z, A-Z), số (0-9), dấu gạch ngang (-) và dấu gạch dưới (_).
Rule::make()->alphaDash();
alphaNum
Trường được xác thực phải hoàn toàn là các ký tự chữ (a-z, A-Z) và số (0-9).
Rule::make()->alphaNum();
alphaSpaces
Trường được xác thực phải hoàn toàn là các ký tự chữ và dấu cách.
Rule::make()->alphaSpaces();
notEmpty
Kiểm tra xem giá trị input có phải là chuỗi rỗng không
Tham số:
| Params | Type | Description | Default |
|---|---|---|---|
| $trim | bool | Nếu true value sẽ được lượt bỏ khoản trắng trước khi kiểm tra | true |
Rule::make()->notEmpty(true);
Between
Kiểm tra xem giá trị đầu vào có nằm giữa (đúng hay không) hai số đã cho.
Giá trị đầu vào có thể là
- Chuỗi (string) : dựa trên độ dài (khi đi kèm điều kiện xác thực
string) - Số (number) : dựa trên độ lớn (khi đi kèm điều kiện xác thực
numerichoặcinteger) - Mãng (array) : dựa trên số lượng phân tử
Tham số:
| Params | Đối số | Type | Description | Default |
|---|---|---|---|---|
| $min | int | Giá trị nhỏ nhất field cần đáp ứng | ||
| $max | int | Giá trị lớn nhất field có thể nhận vào | ||
| $equal | bool | Nếu true cho phép giá trị cần so sánh được phép bằng nhau | true |
Rule::make()->between(int $min, int $max, bool $equal);
color
Xác thực màu ở các định dạng khác nhau
Tham số:
| Params | Type | Description | Default |
|---|---|---|---|
| $types | array | Loại mã màu (rgb, rgba, hex, keyword), | rgb, rgba, hex, keyword |
Rule::make()->color(['rgb', 'hex']);
Kiểu các loại được hỗ trợ:
| Type | Ví dụ |
|---|---|
| hex | #0000FF, #00F |
| rgb | rgb(255, 255, 255) |
| rgba | rgba(255, 255, 255, 1) |
| keyword | transparent, red |
colorRGB
Xác thực màu ở các định dạng rgb như rgb(255, 255, 255)
Rule::make()->colorRGB();
colorRGBA
Xác thực màu ở các định dạng rgba như rgba(255, 255, 255, 1)
Rule::make()->colorRGBA();
colorHex
Xác thực màu ở các định dạng hex như #0000FF, #00F
Rule::make()->colorHex();
date
Xác thực định dạng ngày tháng năm
Tham số:
| Params | Type | Description | Default |
|---|---|---|---|
| $format | string | format kiểu ngày tháng năm sẽ so sánh | d/m/Y |
Rule::make()->date('d/m/Y');
before
Trường được xác thực phải là giá trị trước ngày đã cho
Tham số:
| Params | Type | Description | Default |
|---|---|---|---|
| $time | string | Thời gian cần so sánh | |
| $format | string | format kiểu ngày tháng năm sẽ so sánh | d/m/Y |
Rule::make()->before('10/06/2024', 'd/m/Y');
after
Trường được xác thực phải là giá trị sau ngày đã cho
Tham số:
| Params | Type | Description | Default |
|---|---|---|---|
| $time | string | Thời gian cần so sánh | |
| $format | string | format kiểu ngày tháng năm sẽ so sánh | d/m/Y |
Rule::make()->after('10/06/2024', 'd/m/Y');
identical
Kiểm tra xem giá trị có giống với một trong các giá trị đã cho không
Tham số:
| Params | Type | Description | Default |
|---|---|---|---|
| $data | string | Tên field lấy giá trị so sánh hoặc chuổi so sanh | |
| $type | string | Nếu type là input $data được xem như tên field, nếu type là string data được xem như chuổi string | string |
$form->password('password', [
'label' => 'Nhập mật khẩu',
'validations' => Rule::make()->notEmpty()
]);
$form->password('re_password', [
'label' => 'Nhập lại mật khẩu',
'validations' => Rule::make()
->notEmpty()
->identical('password', 'input')
]);
//giá trị nhập vào field re_password phải giống với field password
digits
Kiểm tra xem dữ liệu đầu vào chỉ chứa các chữ số
Rule::make()->digits();
numeric
Kiểm tra xem giá trị có phải là số không
Rule::make()->numeric();
integer
Kiểm tra đầu vào có phải là số nguyên
Tham số:
| Params | Đối số | Type | Description | Default |
|---|---|---|---|---|
| array $args | thousandsSeparator | string | Dấu phân cách hàng ngàng (trống, dấu cách, dấu phẩy, dấu chấm) | trống |
| decimalSeparator | string | Dấu phân cách hàng thập phân (dấu phẩy, dấu chấm) | dấu chấm (.) |
Rule::make()->integer($args);
email
Xác thực đúng định dạng địa chỉ email
Rule::make()->email();
ip
Xác thực địa chỉ IP (ipv4 hoặc ipv6)
Rule::make()->ip();