久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

ThinkPHP開發(fā)指南-模型之自動(dòng)驗(yàn)證

來自站長(zhǎng)百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

導(dǎo)航:上一頁

類型檢查只是針對(duì)數(shù)據(jù)庫級(jí)別的驗(yàn)證,所以系統(tǒng)還內(nèi)置了數(shù)據(jù)對(duì)象的自動(dòng)驗(yàn)證功能來完成模型的業(yè)務(wù)規(guī)則驗(yàn)證,而大多數(shù)情況下面,數(shù)據(jù)對(duì)象是由表單提交的$_POST數(shù)據(jù)創(chuàng)建。需要使用系統(tǒng)的自動(dòng)驗(yàn)證功能,只需要在Model類里面定義$_validate屬性,是由多個(gè)驗(yàn)證因子組成的數(shù)組,支持的驗(yàn)證因子格式:

PHP代碼

array(驗(yàn)證字段,驗(yàn)證規(guī)則,錯(cuò)誤提示,驗(yàn)證條件,附加規(guī)則,驗(yàn)證時(shí)間)   
  • 驗(yàn)證字段:需要驗(yàn)證的表單字段名稱,這個(gè)字段不一定是數(shù)據(jù)庫字段,也可以是表單的一些輔助字段,例如確認(rèn)密碼和驗(yàn)證碼等等。(必須)
  • 驗(yàn)證規(guī)則: 要進(jìn)行驗(yàn)證的規(guī)則,需要結(jié)合附加規(guī)則(必須)
  • 提示信息: 用于驗(yàn)證失敗后的提示信息定義(必須)
  • 驗(yàn)證條件:(可選)

PHP代碼

Model::EXISTS_TO_VAILIDATE 或者0 存在字段就驗(yàn)證 (默認(rèn))    

Model::MUST_TO_VALIDATE 或者1 必須驗(yàn)證     

Model::VALUE_TO_VAILIDATE或者2 值不為空的時(shí)候驗(yàn)證    

附加規(guī)則: 配合驗(yàn)證規(guī)則使用(可選),包括:

  • regex 使用正則進(jìn)行驗(yàn)證,表示前面定義的驗(yàn)證規(guī)則是一個(gè)正則表達(dá)式(默認(rèn))
  • function 使用函數(shù)驗(yàn)證,前面定義的驗(yàn)證規(guī)則是一個(gè)函數(shù)名
  • callback 使用方法驗(yàn)證,前面定義的驗(yàn)證規(guī)則是當(dāng)前Model類的一個(gè)方法
  • confirm 驗(yàn)證表單中的兩個(gè)字段是否相同,前面定義的驗(yàn)證規(guī)則是一個(gè)字段名
  • equal 驗(yàn)證是否等于某個(gè)值,該值由前面的驗(yàn)證規(guī)則定義
  • in 驗(yàn)證是否在某個(gè)范圍內(nèi),前面定義的驗(yàn)證規(guī)則必須是一個(gè)數(shù)組
  • unique 驗(yàn)證是否唯一,系統(tǒng)會(huì)根據(jù)字段目前的值查詢數(shù)據(jù)庫來判斷是否存在相同的值

系統(tǒng)還內(nèi)置了一些常用正則驗(yàn)證的規(guī)則,可以直接使用,包括:require 字段必須、email 郵箱、url URL地址、currency 貨幣、number 數(shù)字,這些驗(yàn)證規(guī)則可以直接使用。驗(yàn)證時(shí)間:(可選)

PHP代碼

Model:: MODEL_INSERT 或者1新增數(shù)據(jù)時(shí)候驗(yàn)證    

Model:: MODEL_UPDATE 或者2編輯數(shù)據(jù)時(shí)候驗(yàn)證    

Model:: MODEL_BOTH 或者3 全部情況下驗(yàn)證(默認(rèn))    

示例:PHP代碼

protected $_validate         =         array(    

array('verify','require','驗(yàn)證碼必須!'), //默認(rèn)情況下用正則進(jìn)行驗(yàn)證    

array(name,'','帳號(hào)名稱已經(jīng)存在!',0,’unique’,1), // 在新增的時(shí)候驗(yàn)證name字段是否唯一    

array('value',array(1,2,3),'值的范圍不正確!',2,’in’), // 當(dāng)值不為空的時(shí)候判斷是否在一個(gè)范圍內(nèi)    

array('repassword','password','確認(rèn)密碼不正確',0,’confirm’), // 驗(yàn)證確認(rèn)密碼是否和密碼一致    

array('password','checkPwd','密碼格式不正確',0,’function’), // 自定義函數(shù)驗(yàn)證密碼格式    

);    

當(dāng)使用系統(tǒng)的create方法創(chuàng)建數(shù)據(jù)對(duì)象的時(shí)候會(huì)自動(dòng)進(jìn)行數(shù)據(jù)驗(yàn)證操作,代碼示例:

PHP代碼

$User = D("User"); // 實(shí)例化User對(duì)象    

if (!$User->create()){    

// 如果創(chuàng)建失敗 表示驗(yàn)證沒有通過 輸出錯(cuò)誤提示信息    

exit($User->getError());    

}else{    

// 驗(yàn)證通過 可以進(jìn)行其他數(shù)據(jù)操作    

}   

通常來說,每個(gè)數(shù)據(jù)表對(duì)應(yīng)的驗(yàn)證規(guī)則是相對(duì)固定的,但是有些特殊的情況下面可能會(huì)改變驗(yàn)證規(guī)則,我們可以動(dòng)態(tài)的改變驗(yàn)證規(guī)則來滿足不同條件下面的驗(yàn)證:

PHP代碼

$User = D("User"); // 實(shí)例化User對(duì)象    

$validate    =    array(    

array('verify','require','驗(yàn)證碼必須!'), // 僅僅需要進(jìn)行驗(yàn)證碼的驗(yàn)證    

);    

$User-> setProperty("_validate",$validate);    

$result = $User->create();    

if (!$result){    

// 如果創(chuàng)建失敗 表示驗(yàn)證沒有通過 輸出錯(cuò)誤提示信息    

exit($User->getError());    

}else{    

// 驗(yàn)證通過 可以進(jìn)行其他數(shù)據(jù)操作    

}