YII用戶註冊和用戶登錄(三)之模型中規則制定和分析
阿新 • • 發佈:2017-05-24
模型 als del 郵箱 收信 com unique mark div
2 驗證規則制定:
還有沒有別的驗證規則?
3 模型中規則制定和分析
YII模型主要分為兩類,一個數據模型,處理和數據庫相關的增刪改查。繼承CActiveRecord。還有一個是表單模型,繼承CFormModel。不與數據庫進行交互。操作與數據模型保持一致。
先分析數據模型:
數據模型基本包括四個方法。這裏有兩個須要註意的地方:
1 還記得視圖中有確認password選項嗎?數據庫中沒有這一個字段,不進行處理的話。程序會報錯
處理方法:聲明這樣變量,並將這個變量進行label映射
例如以下:
public $password2; // //設置標簽名字與數據庫字段相應 public function attributeLabels() { return array( ‘username‘=>‘用戶名‘, ‘password‘=>‘密 碼‘, ‘password2‘=>‘確認密碼‘, ‘user_sex‘=>‘性 別‘, ‘user_qq‘=>‘qq號碼‘, ‘user_hobby‘=>‘愛 好‘, ‘user_xueli‘=>‘學 歷‘, ‘user_introduce‘=>‘簡 介‘, ‘user_email‘=>‘郵 箱‘, ‘user_tel‘=>‘手機號碼‘, ); }
2 驗證規則制定:
/* * 實現用戶註冊表單驗證 * 在模型裏邊設置一個方法,定義詳細表單域驗證規則 */ public function rules() { return array( array(‘username‘,‘required‘,‘message‘=>‘username必填‘), //username不能反復(與數據庫比較) array(‘username‘, ‘unique‘, ‘message‘=>‘username已經占用‘), array(‘password‘,‘required‘,‘message‘=>‘密碼必填‘), //驗證確認密碼password2 要與密碼的信息一致 array(‘password2‘,‘compare‘,‘compareAttribute‘=>‘password‘,‘message‘=>‘兩次密碼必須一致‘), //郵箱默認不能為空 array(‘user_email‘,‘email‘,‘allowEmpty‘=>false, ‘message‘=>‘郵箱格式不對‘), //驗證qq號碼(都是數字組成。5到12位之間。開始為非0信息,使用正則表達式驗證) array(‘user_qq‘,‘match‘,‘pattern‘=>‘/^[1-9]\d{4,11}$/‘,‘message‘=>‘qq格式不對‘), //驗證手機號碼(都是數字。13開始,一共同擁有11位) array(‘user_tel‘,‘match‘,‘pattern‘=>‘/^13\d{9}$/‘,‘message‘=>‘手機號碼格式不對‘), //驗證學歷(信息在2、3、4、5之間則表示有選擇,否則沒有),1正則;2範圍限制 //範圍限制 array(‘user_xueli‘,‘in‘,‘range‘=>array(2,3,4,5),‘message‘=>‘學歷必須選擇‘), //驗證愛好:必選兩項以上(自己定義方法對愛好進行驗證) array(‘user_hobby‘,‘check_hobby‘), //為沒有詳細驗證規則的屬性,設置安全的驗證規則。否則attributes不給接收信息 array(‘user_sex,user_introduce‘,‘safe‘), ); } /* * 在當前模型裏邊定義一個方法check_hobby對愛好進行驗證 */ function check_hobby(){ //在這種方法裏邊,我們能夠獲得模型的相關信息 //$this -> 屬性名; //調用模型對象的相關屬性信息 //$this 就是我們在控制器controller裏邊實例化好的模型對象 $len = strlen($this -> user_hobby); if($len < 3) $this -> addError(‘user_hobby‘,‘愛好必須選擇兩項或以上‘); }
還有沒有別的驗證規則?
有的,見下圖:
表單模型:主要用於收集用戶信息。
整個過程:
在組件中的改動:
就此OK。
YII用戶註冊和用戶登錄(三)之模型中規則制定和分析