是使用過程中,碰到的問題,以及總結
~~~
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $_validate = array(
array('verify','require','驗證碼必須!'),
);
}
~~~
說明:
`array('verify','require','驗證碼必須!'),`
//默認情況下用正則進行驗證,其實本身是,后面3個都是默認值
`array('verify','require','驗證碼必須!',0, 'regex', 3),`
1. verify:需要驗證的表單字段名稱,這個字段不一定是數據庫字段
2. require: 驗證規則(要進行驗證的規則,需要結合附加規則,如果在使用正則驗證的附加規則情況下,系統還內置了一些常用正則驗證的規則,可以直接作為驗證規則使用,包括:require 字段必須、email 郵箱、url URL地址、currency 貨幣、number 數字。)
3. 驗證碼必須!:用于驗證失敗后的提示信息定義
4. 0:默認0
包含下面幾種情況:
self::EXISTS_VALIDATE 或者0 存在字段就驗證(默認)
self::MUST_VALIDATE 或者1 必須驗證
self::VALUE_VALIDATE或者2 值不為空的時候驗證
5. regex:附加規則 (具體看自動驗證,以及后面事例)
6. 3:默認3(驗證時間)
包含下面幾種情況:
self::MODEL_INSERT或者1新增數據時候驗證
self::MODEL_UPDATE或者2編輯數據時候驗證
self::MODEL_BOTH或者3全部情況下驗證(默認)
理解:就是在什么情況下驗證數據,是新增語句,還是編輯語句,
這里的驗證時間需要注意,并非只有這三種情況,你可以根據業務需要增加其他的驗證時間。
例如:
~~~
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $_validate = array(
array('verify','require','驗證碼必須!'), // 都有時間都驗證
array('name','checkName','帳號錯誤!',1,'function',4), // 只在登錄時候驗證
array('password','checkPwd','密碼錯誤!',1,'function',4), // 只在登錄時候驗證
);
}
~~~
那么,我們就可以在登錄的時候使用
~~~
$User = D("User"); // 實例化User對象
if (!$User->create($_POST,4)){ // 登錄驗證數據
// 驗證沒有通過 輸出錯誤提示信息
exit($User->getError());
}else{
// 驗證通過 執行登錄操作
}
~~~
$User->create($_POST,4)創建數據的時候可以指定類型,需要實例化數據庫,D方法
使用過的自動驗證
~~~
protected $_validate = array(
//array(驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間)
//驗證用戶名不能為空,在新增的時候
array('user_login', 'require', '用戶名稱不能為空!', 1, 'regex', Model:: MODEL_INSERT),
//驗證用戶名不能為空,在更新的時候
array('user_login', 'require', '用戶名稱不能為空!', 1, 'regex', Model:: MODEL_UPDATE),
//驗證密碼的位數,在更新和添加的時候
array('user_pass', '3,12', '密碼必須為6到12位', 1, 'length', 3),
// 驗證user_login字段是否唯一
array('user_login', '', '用戶名已經存在!', 1, 'unique', Model:: MODEL_BOTH),
// 驗證user_email字段格式是否正確,2種寫法一樣
array('user_email', 'email', '郵箱格式不正確!', 0, '', Model:: MODEL_BOTH),
array('user_email', 'email', '郵箱格式不正確!', 0, 'regex', 3),
);
~~~