WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
ThinkPHP開發(fā)指南-模型之自動驗證:修訂間差異
來自站長百科
無編輯摘要 |
無編輯摘要 ? |
||
第106行: | 第106行: | ||
}? ? ? | }? ? ? | ||
</pre> | </pre> | ||
[[category:ThinkPHP]] |
2010年5月9日 (日) 11:41的最新版本
導航:上一頁
類型檢查只是針對數(shù)據(jù)庫級別的驗證,所以系統(tǒng)還內(nèi)置了數(shù)據(jù)對象的自動驗證功能來完成模型的業(yè)務規(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ù)表對應的驗證規(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ù)操作 }