🤩Các rule validation có sẵn (Available validation rules) Phần 3 (ok)

https://viblo.asia/p/tap-21-validation-laravel-tiep-theo-gAm5yGaAZdb

Các rule validation có sẵn (Available validation rules)

Accepted

Trường được xác thực phải có giá trị là "yes", "on", 1 hoặc true. Hữu dụng khi tạo checkbox "Ghi nhớ đăng nhập" hoặc "Đồng ý điều khoản và dịch vụ"...

C:\xampp8\htdocs\plugindev\routes\web.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Active URL

Trường được xác thực phải có bản ghi A hoặc AAAA hợp lệ theo dns_get_record của PHP. Cái này theo mình biết thường dùng để kiểm tra tên miền đã được đăng ký hay chưa, các bạn có thể Google để tìm hiểu thêm. Thường áp dụng cho mấy website thuê tên miền, hosting...

C:\xampp8\htdocs\plugindev\routes\web.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Date

Trường được xác thực phải có giá trị là một date hợp lệ, không liên quan theo hàm strtotime của PHP.

C:\xampp8\htdocs\plugindev\routes\web.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Date format

Trường được xác thực phải phù hợp với định dạng date đã cho. Bạn chỉ nên sử dụng một trong hai rule date hoặc date_format để xác định một trường, không phải cả hai.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Date equals

Trường được xác thực phải có date bằng date đã cho. Date được chuyển vào hàm strtotime của PHP.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

After (Date)

Trường được xác thực phải có giá trị là date sau date đã cho. Date sẽ được chuyển vào strtotime của PHP.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

After or equal (Date)

Trường được xác thực phải có giá trị là date sau hoặc bằng date đã cho.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Alpha

Trường được xác thực chỉ được chứa chữ cái.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Alpha dash

Trường được xác thực chỉ được chứa chữ cái và số, cũng như dấu -_.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Alpha numeric

Trường được xác thực chỉ được chứa chữ cái và số.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Numeric

Trường được xác thực phải là một số.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Digits

Trường được xác thực phải là số và có độ dài bẳng độ dài đã cho.

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

Digits between

Trường được xác thực phải là số và có độ dài nằm trong khoảng min, max đã cho.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Integer

Trường được xác thực phải là một số nguyên.

Array

Trường được xác thực phải có định dạng mảng PHP.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Distinct

Khi làm việc với array, trường được xác thực không được có gí trị trùng lặp nào.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

Hoặc

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

In

Trường được xác thực phải là một phần tử nằm trong mảng đã cho.

Mặc định:

Đôi khi sử dụng valiation rule còn khá nhiều hạn chế. Chính vì vậy, ta có thể sử dụng method Rule::in để linh hoạt hơn.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\routes\web.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

In array

Trường được xác thực phải có giá trị thuộc các key của mảng. Thường để kiểm tra một giá trị có tồn tại trong multi-level array hay không.

C:\xampp8\htdocs\plugindev\routes\web.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Not in

Trường được xác thực phải không phải là một phần tử nằm trong mảng đã cho.

Bail

Dừng validation rule input nếu thất bại tại rule trước đó. đỡ phải tốn query :)

Before (Date)

Trường được xác thực phải có giá trị là date trước date đã cho.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Before or equal (Date)

Trường được xác thực phải có giá trị là date trước hoặc bằng date đã cho.

Between

Với chuỗi:

Với số cần lưu ý một chút, ta cần phải thêm rule number để xác thực là số trước khi rule between được kiểm tra.

Boolean

Trường được xác định phải ở dạng boolean, có thể chấp nhận true, false, 1, 0, "1""0".

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Confirmed

Trường foo được xác thực phải khớp với trường foo_confirmation. Chẳng hạn bạn muốn xác thực trường password với rule confirmed, trường password_confirmation phù hợp (khớp với trường password) phải có mặt trong request.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Different

Trường được xác thực phải có giá trị khác với trường đã cho.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Dimensions

Trường được xác thực phải là một ảnh và đáp ứng các ràng buộc về kích thước được chỉ định bởi các tham số của rule.

Validation rule: Có tất cả 7 loại tham số:

  • min_width

  • min_height

  • max_width

  • max_height

  • ratio: giá trị tỉ lệ = chiều rộng / chiều cao hoặc bằng số float nào đó

  • width

  • height

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Email

Trường được xác thực phải là một địa chỉ email. Trong giới hạn, rule này sử dụng gói egulias/email-vaidator để validate email. Trong đó có các validator như:

  • rfc: RFCValidator

  • strict: NoRFCWarningsValidation

  • spoof: SpoofCheckValidation

  • dns: DNSCheckValidation

  • filter: FilterEmailValidation

Mặc định Laravel sử dụng validator rfc để validate. Với validator filter, nó sử dụng method filter_var để validate.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Ends with

Trường được xác thực phải kết thúc bằng một trong các giá trị đã cho.

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

Exists (Database)

Trường được xác thực phải chứa giá trị tồn tại trong cột của database table. Thường dùng để kiểm tra xem ID có tồn tại trước khi thực hiện sửa hoặc xóa...

Nếu column không được chỉ định thì sẽ tự động lấy tên của trường đển gán cho column.

Trường hợp khai báo column:

Nếu ứng dụng của bạn sử dụng nhiều database connection, có thể sử dụng ký hiệu . để tham chiếu theo ý muốn.

Mặc định thì rule này sẽ sử dụng câu truy vấn:

Nếu bạn muốn thay đổi thiết lập này, bạn có thể sử dụng method Rule::exists:

Ta có thể sử dụng global helper request để lấy dữ liệu từ input id.

File

Trường được xác thực phải là tệp đã upload thành công.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\app\Models\File.php

C:\xampp8\htdocs\plugindev\database\migrations\2023_02_05_050941_create_files_table.php

C:\xampp8\htdocs\plugindev\database\migrations\2023_02_05_050941_create_files_table.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Greater than

Trường được xác thực phải lớn hơn trường đã cho. Hai trường phải cùng loại dữ liệu, bao gồm: chuỗi, số, mảng và file. Về quy ước so sánh tương tự như rule between.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Greater than or equal

Trường được xác thực phải lớn hơn hoặc bằng trường đã cho. Hai trường phải cùng loại dữ liệu, bao gồm: chuỗi, số, mảng và file. Về quy ước so sánh tương tự như rule between.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Less than

Trường được xác thực phải nhỏ hơn trường đã cho. Hai trường phải cùng loại dữ liệu, bao gồm: chuỗi, số, mảng và file. Về quy ước so sánh tương tự như rule

Less than or equal

Trường được xác thực phải nhỏ hơn hoặc bằng trường đã cho. Hai trường phải cùng loại dữ liệu, bao gồm: chuỗi, số, mảng và file. Về quy ước so sánh tương tự như rule between.

Min

rường được xác thực phải lớn hơn hoặc bằng giá trị lớn nhất cho trước, bao gồm: chuỗi, số, mảng và file. Về quy ước so sánh tương tự như rule between.

Max

Trường được xác thực phải nhỏ hơn hoặc bằng giá trị lớn nhất cho trước, bao gồm: chuỗi, số, mảng và file. Về quy ước so sánh tương tự như rule between.

Image

Trường được xác thực phải là tệp ảnh, bao gồm các định dạng: jpeg, png, bmp, gif, svg, hoặc webp.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\routes\web.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

IP address

Trường được xác thực phải là một phần tử nằm trong mảng đã cho.

Trường được xác thực phải một địa chỉ IP. Bao gồm các loại:

  • ip: Địa chỉ IP

  • ipv4: Địa chỉ IPv4

  • ipv6: Địa chỉ IPv6

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

String json

Trường được xác thực phải là một chuỗi JSON hợp lệ.

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

MIME types (Nó không hoạt động 1 mình mà kết hợp với Extension (File)

File được xác thực phải khớp với một trong các MIME đã cho. Để xác thực được MIME của file, nội dung file sẽ được đọc và framework sẽ dự đoán loại MIME, điều này có thể khác với loại MIME cho người dùng cung cấp.

Extension (File)

File được xác thực phải khớp với một trong các định dạng mở rộng đã cho. Rule này sẽ xác thực MIME trước thông qua đọc nội dụng file và đoán rồi mới xác thực định dạng mở rộng. Có thể nói đây là một rule mở rộng của mimetypes. Bạn có thể tham khảo một số các MIME tại

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Thêm mở rộng C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

Regex

Trường được xác thực phải khớp với regular expression đã cho. Rule này bản chất sử dụng hàm preg_match trong PHP, do đó cần chú ý đến các ký tự của chuỗi pattern.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Not regex

Trường được xác thực không được khớp với regular expression đã cho. Rule này bản chất sử dụng hàm preg_match trong PHP, do đó cần chú ý đến các ký tự của chuỗi pattern.

C:\xampp8\htdocs\plugindev\routes\web.php

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Nullable

Trường được xác thực có thể nhận giá trị null, nếu không thì phải tuân thủ các validation rule còn lại.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Present

Trường được xác thực phải có mặt trong request nhưng có thể trống.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Required gần giống với Present

Trường được xác thực phải có mặt trong request và không được trống. Một trường được coi là trống nếu rơi vào các trường hợp sau:

  • Giá trị là null.

  • Giá trị là mội chuỗi trống.

  • Giá trị là một mảng trống hoặc object Countable trống (sẽ tìm hiểu ở các tập sau).

  • Giá trị là một file đã upload nhưng không tìm thấy đường dẫn.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Required if

Trường được xác thực phải có mặt trong request và không được trống nếu như một trường khác có giá trị bằng giá trị đã cho.

Ngoài ra bạn cũng có thể sử dụng method Rule::requiredIf để linh hoạt hơn. Method này chấp nhận giá trị boolean hoặc một Closure object trả về gía trị boolean. Nếu là true thì validation rule này sẽ được thực thi.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Required unless

Trường được xác thực phải có mặt trong request và không được trống trừ khi một trường khác có giá trị bằng giá trị đã cho.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Required with

Trường được xác thực phải có mặt trong request và không được trống trừ nếu một trong các trường liệt kê có mặt trong request.

C:\xampp8\htdocs\plugindev\app\Http\Controllers\PostController.php

C:\xampp8\htdocs\plugindev\resources\views\posts\create.blade.php

Required with all

Trường được xác thực phải có mặt trong request và không được trống trừ nếu tất cả các trường liệt kê có mặt trong request.

Last updated

Was this helpful?