內置規則
系(xi)統內置的(de)驗證(zheng)規則如(ru)下:
格式驗證類
require
驗證(zheng)某個字段必須,例如:
'name'=>'require'
number 或者 integer
驗證某個字段的值是否為數字(采用filter_var驗證),例如:
'num'=>'number'
float
驗證某個字段的值是否為浮點數字(采用filter_var驗證),例如:
'num'=>'float'
boolean
驗證某個字段的值是否為布爾值(采用filter_var驗證),例如:
'num'=>'boolean'
驗證某個字段的值是否為email地址(采用filter_var驗證),例如:
'email'=>'email'
array
驗證某個字段的值是否為數組,例如:
'info'=>'array'
accepted
驗證某個字段是(shi)否(fou)為(wei)為(wei) yes, on, 或是(shi) 1。這在確認"服務條款"是(shi)否(fou)同意時很有用(yong),例如:
'accept'=>'accepted'
date
驗證值是否為有效的日期(qi),例如:
'date'=>'date'
會對日期值進行strtotime后進行判斷。
alpha
驗證(zheng)某個字段的值是否為字母(mu),例如:
'name'=>'alpha'
alphaNum
驗證某個字(zi)段的值是否(fou)為字(zi)母和數字(zi),例如:
'name'=>'alphaNum'
alphaDash
驗證某個字段的值是否為字母和數字,下劃線_及破折號-,例如:
'name'=>'alphaDash'
chs
驗(yan)證某個字(zi)段的值只能是漢字(zi),例如:
'name'=>'chs'
chsAlpha
驗證某個(ge)字(zi)段(duan)的值只能是漢字(zi)、字(zi)母,例(li)如:
'name'=>'chsAlpha'
chsAlphaNum
驗證(zheng)某個字(zi)段的值只能是漢字(zi)、字(zi)母和數字(zi),例如:
'name'=>'chsAlphaNum'
chsDash
驗證(zheng)某個字(zi)段的值(zhi)只能是漢字(zi)、字(zi)母、數字(zi)和下劃線(xian)_及破折號-,例如:
'name'=>'chsDash'
activeUrl
驗證某個字(zi)段的值是否為有效的域名(ming)或者(zhe)IP,例如:
'host'=>'activeUrl'
url
驗證某個字段的值是否為有效的URL地址(采用filter_var驗證),例如:
'url'=>'url'
ip
驗證某個字段的值是否為有效的IP地址(采用filter_var驗證),例如:
'ip'=>'ip'
支持驗證ipv4和(he)ipv6格式的(de)IP地址。
dateFormat:format
驗證某個(ge)字段的值(zhi)是否為(wei)指(zhi)定格式的日(ri)期,例如:
'create_time'=>'dateFormat:y-m-d'
長度和區間驗證類
in
驗(yan)證某(mou)個(ge)字段(duan)的值是否在某(mou)個(ge)范圍,例如:
'num'=>'in:1,2,3'
notIn
驗證(zheng)某個字段的值不在某個范(fan)圍,例(li)如:
'num'=>'notIn:1,2,3'
between
驗證(zheng)某(mou)個(ge)字段的值是否在某(mou)個(ge)區間,例如:
'num'=>'between:1,10'
notBetween
驗證(zheng)某個字段的值不(bu)在某個范圍,例如:
'num'=>'notBetween:1,10'
length:num1,num2
驗證某個(ge)字(zi)段(duan)的值的長度是否(fou)在(zai)某個(ge)范圍(wei),例如:
'name'=>'length:4,25'
或者指定長度
'name'=>'length:4'
如果驗證的數據是數組,則判斷數組的長度。
如(ru)果(guo)驗證的(de)數據是File對象,則判斷文件的(de)大小。
max:number
驗證(zheng)某個(ge)字段的(de)值的(de)最大長度(du),例如(ru):
'name'=>'max:25'
如果驗證的數據是數組,則判斷數組的長度。
如果(guo)驗(yan)證的數據(ju)是File對象,則判斷文件的大(da)小(xiao)。
min:number
驗(yan)證某個字(zi)段的值(zhi)的最小長度,例如:
'name'=>'min:5'
如果驗證的數據是數組,則判斷數組的長度。
如果驗證的數據是File對象(xiang),則判斷文件(jian)的大(da)小。
after:日期
驗(yan)證某個字段的(de)值是否在(zai)某個日期之后(hou),例如(ru):
'begin_time' => 'after:2016-3-18',
before:日期
驗證某個字(zi)段的值是(shi)否(fou)在某個日期之前,例(li)如:
'end_time' => 'before:2016-10-01',
expire:開始時間,結束時間
驗(yan)證當前操作(注意不是某(mou)個(ge)值(zhi))是否在某(mou)個(ge)有效(xiao)日(ri)期之內,例如:
'expire_time' => 'expire:2016-2-1,2016-10-01',
allowIp:allow1,allow2,...
驗證(zheng)當前請求(qiu)的IP是否在某個(ge)范圍(wei),例如:
'name' => 'allowIp:114.45.4.55',
該規(gui)則(ze)可以(yi)用于某個后臺的訪問權限
denyIp:allow1,allow2,...
驗證當前請求的(de)IP是否禁止(zhi)訪問(wen),例如:
'name' => 'denyIp:114.45.4.55',
字段比較類
confirm
驗證某個字段(duan)是否和另(ling)外一(yi)個字段(duan)的值一(yi)致,例如:
'repassword'=>'require|confirm:password'
5.0.4+版本開始,增(zeng)加了字段自動(dong)匹配驗證規則,如password和(he)password_confirm是自動(dong)相互(hu)驗證的,只需要使用
'password'=>'require|confirm'
會自(zi)動驗(yan)證和password_confirm進行(xing)字段比較是否一致(zhi),反之亦然。
different
驗(yan)證某個(ge)字(zi)段是否(fou)和另(ling)外一個(ge)字(zi)段的值不一致,例(li)如:
'name'=>'require|different:account'
eq 或者 = 或者 same
驗證(zheng)是(shi)否等于(yu)某個值,例(li)如:
'score'=>'eq:100'
'num'=>'=:100'
'num'=>'same:100'
egt 或者 >=
驗證是否大于等于某(mou)個值(zhi),例如:
'score'=>'egt:60'
'num'=>'>=:100'
gt 或者 >
驗證是否大于某個值(zhi),例如:
'score'=>'gt:60'
'num'=>'>:100'
elt 或者 <=
驗證是否小于(yu)等于(yu)某(mou)個值(zhi),例(li)如:
'score'=>'elt:100'
'num'=>'<=:100'
lt 或者 <
驗證是否小于(yu)某個值,例如:
'score'=>'lt:100'
'num'=>'<:100'
驗證字段比較支持對比其他字段(V5.0.8+)
驗證(zheng)對比其他字段大小(xiao)(xiao)(數值大小(xiao)(xiao)對比),例如:
'price'=>'lt:market_price'
'price'=>'<:market_price'
filter驗證
支持使用filter_var進行驗(yan)證,例如(ru):
'ip'=>'filter:validate_ip'
正則驗證
支持直接使用正則(ze)驗證(zheng),例如:
'zip'=>'\d{6}',
// 或者
'zip'=>'regex:\d{6}',
如果你的正則表達式中包含有|符號的話,必須(xu)使用數組方式(shi)定義。
'accepted'=>['regex'=>'/^(yes|on|1)$/i'],
也可以實現預定義正則表達式后直接調用,例如在驗證器類中定義regex屬性
protected $regex = [ 'zip' => '\d{6}'];
然(ran)后就可以使用
'zip' => 'regex:zip',
上傳驗證
file
驗證是否是一個上傳文件
image:width,height,type
驗(yan)證是(shi)(shi)否(fou)是(shi)(shi)一個圖(tu)像(xiang)文件,width height和type都是(shi)(shi)可選,width和height必(bi)須同時定義(yi)。
fileExt:允許的文件后綴
驗證(zheng)上(shang)傳(chuan)文件后綴(zhui)
fileMime:允許的文件類型
驗證(zheng)上(shang)傳文件類(lei)型(xing)
fileSize:允許的文件字節大小
驗證(zheng)上(shang)傳文件大小
行為驗證
使用行為驗證數(shu)據,例如:
'data'=>'behavior:\app\index\behavior\Check'
其它驗證
unique:table,field,except,pk
| 版本 | 調整功能 |
|---|---|
| 5.0.5 | 支持指定完整模型類 并且默認會優先檢測模型類是否存在 不存在則檢測數據表 |
驗證當前請求的字段(duan)值是否(fou)為(wei)唯一(yi)的,例如:
// 表(biao)示驗證name字(zi)段的值是否在user表(biao)(不包(bao)含(han)前(qian)綴)中唯一
'name' => 'unique:user',
// 驗證(zheng)其他字段
'name' => 'unique:user,account',
// 排(pai)除某個主鍵值
'name' => 'unique:user,account,10',
// 指定某個主鍵值排除
'name' => 'unique:user,account,10,user_id',
如果需要對復雜的條件(jian)驗證唯(wei)一,可(ke)以使(shi)用下面的方(fang)式:
// 多(duo)個字段(duan)驗證唯一驗證條件(jian)
'name' => 'unique:user,status^account',
// 復(fu)雜驗(yan)證(zheng)條件(jian)
'name' => 'unique:user,status=1&account='.$data['account'],
requireIf:field,value
驗證(zheng)某個(ge)(ge)字段的值等于某個(ge)(ge)值的時候必須,例(li)如:
// 當(dang)account的值等于1的時候(hou) password必須
'password'=>'requireIf:account,1'
requireWith:field
驗證某個字段(duan)有值的時(shi)候必須,例(li)如:
// 當account有(you)值的時候password字段必須
'password'=>'requireWith:account'
