Các giá trị validation thường dùng

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"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'
email 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'