Các giá trị validation thường dùng
- Laravel hỗ trợ rất nhiều các giá trị validation hữu ích, nội dung bài này sẽ nói về các giá trị thường dùng.
- Các giá trị validation khác ngoài bài học này, các bạn có thể tham khảo thêm tại trang chính của Laravel phần Available validation Rules
Cú pháp viết một validation
Cú pháp cơ bản
'name_từ_form'=>'property1|property2|...'
Ví dụ
public function validationform(Request $request) { $this->validation($request,[ 'title'=>'required|string', 'tel'=>'required|numeric' ]); }
Cú pháp với giá trị
'name_từ_form'=>'property1:value1|property2:value2|...'
Ví dụ
public function validationform(Request $request) { $this->validation($request,[ 'code'=>'digits:3', 'age'=>'between:18,30' ]); }
Validation thường dùng
Rule | Mô tả | VD |
---|---|---|
accepted | Dùng khi kiểm tra các điều khoản sử dụng. | 'option' =>'accepted' |
active_url | Dữ liệu nhập phải phải là url theo function checkdnsrr của PHP. | 'path' =>'active_url' |
after:date | Ngày nhập phải sau ngày đã cho. | 'start_date' => 'required|date|after:tomorrow' |
after_or_equal:date | Ngày nhập phải sau hoặc bằng ngày đã cho. | 'start_date' => 'required|date|after_or_equal:tomorrow' |
alpha | Dữ liệu nhập phải là chữ. | 'name' =>'alpha' |
alpha_dash | Dữ liệu nhập phải là chữ hoặc số, bao gồm dấu gạch ngang "-" và gạch dưới "_". | 'address' =>'alpha_dash' |
alpha_num | Dữ liệu nhập phải là số. | 'number' =>'alpha_num' |
array | Dữ liệu nhập phải là mảng PHP. | 'my_array' =>'array' |
bail | Sẽ dừng kiểm tra nếu 1 validate đầu tiên không thỏa mãn. | 'name' =>'bail|require|max:255' |
before:date | Ngày nhập phải trước ngày đã cho. | 'end_date' => 'required|date|before:today' |
before_or_equal:date | Ngày nhập phải trước hoặc bằng với ngày đã cho. | 'end_date' => 'required|date|before_or_equal:today' |
between:min,max | Dữ liệu nhập phải nằm trong giá trị min và max, giá trị có thể là chuỗi, số và file. | 'age' =>'between:18,30' |
boolean | Dữ liệu nhập phải là có giá trị boolean: true hoặc false, 1 hoặc 0, "1" hoặc "0". | 'remember_me' =>'boolean' |
confirmed | Dữ liệu nhập phải trùng khớp với name_confirmation | VD có 2 field: name="password" và name="password_confirmation" thì giá trị Validation sẽ là: 'password' =>'required|confirmed|min:8' |
date | Dữ liệu nhập phải là ngày tháng, phù hợp với hàm strtotime của PHP. | 'date' =>'date' |
date_equals:date | Dữ liệu nhập phải bằng với ngày tháng đã cho, phù hợp với hàm strtotime của PHP. | 'date' =>'date_equals:22/03/2019' |
date_format:format | Dữ liệu nhập phải giống định dạng với format, định dạng phải phù hợp với hàm date_parse_from_format của PHP. | 'date' =>'date_format:d/m/Y' |
different:field | Dữ liệu nhập phải khác với giá trị field. | VD: giá trị name="Nguyễn Văn A", chúng ta muốn giá trị other nhập vào khác với name, khi đó ta viết: 'other' =>'name' |
digits:value | Dữ liệu nhập phải là số, có độ dài bằng value. | 'code' =>'digits:3' |
digits_between:min,max | Dữ liệu nhập phải là số, nằm trong khoảng min và max. | 'code' =>'digits:3,8' |
dimensions | Dữ liệu nhập phải là một ảnh, có kích thước theo quy định, có thể là: min_width, max_width, min_height, max_height, width, height, ratio. |
'image' =>'dimensions:min_width=50, min_height=100' |
distinct | Dữ liệu nhập phải là mãng, và không có giá trị lặp lại. | 'foo.*.id' => 'distinct' |
Dữ liệu nhập phải là địa chỉ email. | 'email' =>'email' | |
exists:table,column | Dữ liệu nhập phải là cột có trong bảng tồn tại trong Database. | 'column' =>'exists:news,title' |
file | Dữ liệu nhập phải là một file tải lên thành công. | 'file' =>'file' |
filled | Dữ liệu nhập không được trống. | 'name' =>'filled' |
gt:field | Dữ liệu nhập phải lớn hơn trường field, và giống kiểu dữ liệu như: Strings, numerics, arrays. | 'number' =>'gt:200' |
gte:field | Dữ liệu nhập phải lớn hơn hoặc bằng trường field, và giống kiểu dữ liệu như: Strings, numerics, arrays. | 'number' =>'gte:200' |
image | Dữ liệu nhập phải là hình có định dạng: jpeg, png, bmp, gif, svg. | 'photo' =>'image' |
in:foo,bar,... | Dữ liệu nhập phải thuộc danh sách các giá trị. | |
in_array:anotherfield | Dữ liệu nhập phải tồn tại trong giá trị của anotherfield | $A = array("1", "2", "3", "4"); 'val' =>'in_array:$A' |
integer | Dữ liệu nhập phải thuộc kiểu integer. | 'number' =>'integer' |
ip | Dữ liệu nhập phải là kiểu địa chỉ ip. | 'pathIp' =>'ip' |
json | Dữ liệu nhập phải là chuỗi JSON. | 'jString' =>'json' |
lt:field | Dữ liệu nhập phải nhỏ hơn trường field, và giống kiểu dữ liệu như: Strings, numerics, arrays. | 'number' =>'lt:200' |
lte:field | Dữ liệu nhập phải nhỏ hơn hoặc bằng trường field, và giống kiểu dữ liệu như: Strings, numerics, arrays. | 'number' =>'lte:200' |
max:value | Dữ liệu nhập phải nhỏ hơn hoặc bằng value. | 'number' =>'max:10' |
mimetypes:text/plain,... | Dữ liệu nhập phải đúng với kiểu MIME. | 'video' => 'mimetypes:video/avi, video/mpeg, video/quicktime' |
MIME | Sử dụng các quy định cơ bản của MIME. | 'photo' => 'mimes:jpeg,bmp,png' |
min:value | Dữ liệu nhập phải phải có giá trị tối thiểu bằng value. | 'number' =>'min:5' |
not_in:foo, bar, ... | Dữ liệu nhập không thuộc danh sách được cung cấp. | 'toppings' =>'Rule::notIn(['sprinkles', 'cherries'])' |
not_regex:pattern | Dữ liệu nhập phải khác với dạng thức cung cấp. | 'email' => 'not_regex:/^.+$/i' |
nullable | Dữ liệu nhập có thể là null, hữu ích dành cho việc nhập các số hay chuỗi có khả năng null. | 'text' =>'nullable' |
numeric | Dữ liệu nhập phải có dạng chữ số. | 'phone' =>'numeric' |
present | Dữ liệu nhập phải xuất hiện trong input, nhưng có thể trống. | 'value' =>'present' |
regex:pattern | Dữ liệu nhập phải giống với dạng thức cung cấp. | 'email' =>'regex:/^.+@.+$/i' |
required | Dữ liệu bắt buộc phải được nhập, không được để trống. | 'name' =>'required' |
required_if:anotherfield, value,... | Dữ liệu nhập là bắt buộc và thỏa mãn điều kiện nào đó. | 'role_id' => Rule::requiredIf($request->user()->is_admin) |
required_unless:anotherfield, value,... | Dữ liệu nhập là bắt buộc và không được theo điều kiện nào đó | 'role_id' => Rule::requiredIf($request->user()->is_guess) |
required_with:foo, bar, ... | Dữ liệu nhập là bắt buộc và phải chứa ít nhất các giá trị cho trước. | 'number' => 'required_with:3,5,7' |
required_with_all:foo, bar,... | Dữ liệu nhập là bắt buộc và phải chứa tất cả các giá trị cho trước. | 'number' => 'required_with_all:3,5,7' |
required_without:foo, bar, ... | Dữ liệu nhập là bắt buộc và không được chứa ít nhất các giá trị cho trước. | 'number' => 'required_without:3,5,7' |
required_without_all:foo, bar, ... | Dữ liệu nhập là bắt buộc và không được chứa tất cả các giá trị cho trước. | 'number' => 'required_without_all:3,5,7' |
same:field | Dữ liệu nhập phải trùng khớp với field. | 'email' =>'same:old_email' |
size:value | Dữ liệu nhập phải cùng kiểu với value, chuỗi thì là string, số thì là integer,... | 'file' =>'size:300' |
starts_with:foo,bar,... | Dữ liệu nhập phải bắt đầu một giá trị đưa trước. | 'number' =>'starts_with:5' |
string | Dữ liệu nhập phải là string, nếu muốn dữ liệu nhập có thể mang giá trị null, thì cần thêm điều kiện nullable. | 'title' =>'string' |
timezone | Dữ liệu nhập phải có giá trị timezone được xác định theo function timezone_identifiers_list của PHP. | 'time' =>'timezone' |
unique:table, column, except, idColumn | Dữ liệu nhập phải là duy nhất trong bảng CSDL, nếu tên colum không được sử dụng thì trường name sẽ được dùng. | 'email' =>'unique:users,email_address' |
unique:()->ignore() | Dữ liệu nhập phải là duy nhất và bỏ qua trường nào đó. | 'email' =>Rule::unique('users')->ignore($user->id) |
unique:()->where() | Dữ liệu nhập phải là duy nhất và thỏa mãn phương thức where. | 'email' =>Rule::unique('users') ->where(function ($query) { return $query->where('account_id', 1); }) |
url | Dữ liệu nhập phải là dạng url. | 'path' =>'url' |
uuid | Dữ liệu nhập phải mang giá trị RFC 4122 (phiên bản 1,3,4 hoặc 5) định danh duy nhất trên toàn cầu (UUID). | 'uuid' =>'uuid' |