Think PHP 自動驗證中使用自定義函數

要使用自動驗證功能必定要使用 ->create()方法
在common 中寫入你的自定義函數
function chickCount($a,$b=6,$c=12)
{
$countA = strlen($a);
if($countA >= $b and $countA <= $c )
{
   return true ;
}else
{
   return false ;
}
}
而後在model
   protected $_validate = array(
   array('name','require','賬號不能爲空!!!'),   //require 是檢查是否爲空
  array('name','chickCount','賬號要在6-12位之間!!!',1,'function'),   //require 是檢查是否爲空
   //array('name','/^[a-z]\w{3,}$/i','賬號格式錯誤!!!'),   //檢查賬號是否符合格式
   array('password','require','密碼必須寫!!!'),       //密碼是否爲空
   array('repassword','require','請確認密碼!!!'),   //重複密碼是否爲空
   array('repassword','password','兩次密碼不一樣!!!',1,'confirm'),   //比較密碼
   array('account','','用戶名已存在!!!',0,'unique',self::MODEL_BOTH),    //檢查賬號是否已經存在
   array('email','require','郵箱不能爲空!!!'),   //require 是檢查是否爲空
   array('phone','number','電話必須是數字!!!')   //require 是檢查是否爲空
   );
Model::EXISTS_TO_VAILIDATE或者0意思是存在字段就驗證(這是默認的)
Model::MUST_TO_VALIDATE或者1必須驗證的意思
Model::VALUE_TO_VAILIDATE或者2值不爲空的時候驗證
附加規則:配合驗證規則使用(可選的)包括下面的東西
Regex使用與此同時進行驗證,
Function使用函數驗證
Callback使用方法驗證就是當前Model類的一個方法
Confirm驗證表單中的兩個字段是否相同.
Equal驗證是否等於某個值,
In驗證是否在某個範圍內,前面定義的驗證規則必須是一個數組
Unique驗證是否惟一,系統會根據字段目前的值查詢數據庫來判斷是否存在相同值
系統內置一些經常使用與此同時驗證的規則,能夠直接使用,其中包括
Require字段必須
Email郵箱
url URL地址
currency貨幣
number數字
zip郵編
integer整數
double
English英文

這些驗證規則能夠直接使用 正則表達式

在ThinkPHP中,內置了數據對象的自動驗證和自動完成功能來完成模型的業務規則驗證,而大多數狀況下面,數據對象是由表單提交的$_POST數據建立。須要使用系統的自動驗證功能,只須要在Model類裏面定義$_validate屬性。 

$_validate屬性的驗證因子格式: 

array(驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間) 

*驗證字段:表單字段名稱,注:這個字段不必定是數據庫字段,也能夠是表單的一些輔助字段--好比確認密碼和驗證碼等等。 

*驗證規則: 要進行驗證的規則,有時須要結合附加規則。 

內置驗證規則--包括:require 字段必須、email 郵箱、url URL地址、currency 貨幣、number 數字,這些驗證規則能夠直接使用。注:若有其它驗證規則則需本身編寫方法 

*提示信息: 用於驗證失敗後的提示信息。 

驗證條件: 

0 或者 Model::EXISTS_TO_VAILIDATE--存在字段就驗證 (默認) 
1 或者 Model::MUST_TO_VALIDATE--必須驗證 
2 或者 Model::VALUE_TO_VAILIDATE--值不爲空的時候驗證 

附加規則: 配合驗證規則使用 

regex 使用正則進行驗證,表示前面定義的驗證規則是一個正則表達式(默認) 
function 使用函數驗證,前面定義的驗證規則是一個函數名 注:系統函數或自定義函數 
callback 使用方法驗證,前面定義的驗證規則是當前Model類的一個方法 注:自定義方法 
confirm 驗證表單中的兩個字段是否相同,前面定義的驗證規則是一個字段名 
equal 驗證是否等於某個值,該值由前面的驗證規則定義 
in 驗證是否在某個範圍內 注:前面定義的驗證規則必須是一個數組 
unique 驗證是否惟一,系統會根據字段目前的值查詢數據庫來判斷是否存在相同的值 注:會請求數據庫 
驗證時間: 
1 或者 Model:: MODEL_INSERT--新增數據時候驗證 
2 或者 Model:: MODEL_UPDATE--編輯數據時候驗證 
3 或者 Model:: MODEL_BOTH--所有狀況下驗證(默認) 
熟悉了$_validate屬性後,就要用實例來分析在驗證某些數據的時候該怎麼樣編寫驗證因子。 

若是學習過ThinkPHP的同窗們應該在手冊中看到過一些關於自動驗證的例子,在這裏咱們將把大多數經常使用的例子都總結在這裏,方便你們來學習和使用,若是有一些同窗們經常使用可是這裏沒有提到的你們能夠集思廣益,來完善全部的自動驗證數據的方法,這裏將不斷更新。 

實例: 
protected $_validate = array( 

array('username','require','用戶名必須!'), // 數據是否爲空 注:默認增長修改都驗證 

array('username','','用戶名已經存在!',0,’unique’,1), // 在新增的時候驗證username字段是否惟一 

array('password','checkPwd','密碼格式不正確',0,’function’), // 密碼格式能夠用chenkPwd方法自定義 

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

array('sex','array(0,1,2)','性別必須爲0,1,2',0,'in'), // 驗證數據是否在一個範圍內 

array('age','number','年齡必須爲數字'), // 驗證數據是否爲數字 

array('email','email','郵箱格式不正確'), // 內置正則驗證郵箱 

array('email','/^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/','郵箱格式不正確), // 自定義正則驗證數據 

array('mypage','url','我的網址格式不正確'), // 內置正則驗證URL地址 

array('verify','****','驗證碼不正確',0,'equal'), // 驗證數據是否等於某個值 注:****能夠是隨機驗證碼 

array('salary','currency','薪水驗證不正確','0'), // 內置驗證貨幣數據 

); 
數據庫

相關文章
相關標籤/搜索