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