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

ThinkPHP開發(fā)指南-模型之自動驗證:修訂間差異

來自站長百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索
無編輯摘要
無編輯摘要
?
第106行: 第106行:
}? ? ?
}? ? ?
</pre>
</pre>
[[category:ThinkPHP]]

2010年5月9日 (日) 11:41的最新版本

導(dǎo)航:上一頁

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

PHP代碼

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

PHP代碼

Model::EXISTS_TO_VAILIDATE 或者0 存在字段就驗證 (默認)    

Model::MUST_TO_VALIDATE 或者1 必須驗證     

Model::VALUE_TO_VAILIDATE或者2 值不為空的時候驗證    

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

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

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

PHP代碼

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

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

Model:: MODEL_BOTH 或者3 全部情況下驗證(默認)    

示例:PHP代碼

protected $_validate         =         array(    

array('verify','require','驗證碼必須!'), //默認情況下用正則進行驗證    

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

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

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

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

);    

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

PHP代碼

$User = D("User"); // 實例化User對象    

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

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

exit($User->getError());    

}else{    

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

}   

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

PHP代碼

$User = D("User"); // 實例化User對象    

$validate    =    array(    

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

);    

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

$result = $User->create();    

if (!$result){    

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

exit($User->getError());    

}else{    

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

}