YII 表單驗證規則大全
'edit','message'=>'連絡人必須填寫.'), array('contact','length','on'=>'edit','min'=>2,'max'=>10,'tooShort'=>'連絡人長度請控制在2-10個字元.','tooLong'=>'連絡人長度請控制在2-10個字元.'), array('tel', 'match','pattern' => '/^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/','message' => '請輸入正確的電話號碼.'), array('fax', 'match','pattern' => '/^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/','message' => '請輸入正確的傳真號碼.'), array('mobile', 'match','pattern' => '/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/','message' => '請輸入正確的手機號碼.'), array('email','email','on'=>'edit','message'=>'郵箱輸入有誤.'), array('zipcode','required','on'=>'edit','message'=>'郵編必須填寫.'), array('zipcode','numerical','on'=>'edit','message'=>'郵編是6位元字.'), array('zipcode','length','on'=>'edit','min'=>6,'max'=>6,'tooShort'=>'郵編長度為6位元.','tooLong'=>'郵編長度為6位元.'), array('website','url','on'=>'edit','message'=>'網址輸入有誤.'), array('qq', 'match','pattern' => '/^[1-9]{1}[0-9]{4,11}$/','message' => '請輸入正確的QQ號碼.'), array('msn','email','on'=>'edit','message'=>'MSN輸入有誤.'), ); } }
完整樣本:
public $password2;//非資料庫的欄位,但是在view中需要用到public $verify;//手機驗證碼public $fjg; //忘記號碼/** * 映射資料庫表名 * @return string the associated database table name
* www.shouce.ren */public function tableName(){return 'adm_user';}/** * 驗證規則 * @return array validation rules for model attributes. */public function rules(){// NOTE: you should only define rules for those attributes that// will receive user inputs.return array(//array('mobile_phone,name,status', 'required'),array('mobile_phone', 'unique'),//'message' => '該手機號已經存在!'array('mobile_phone', 'match','pattern' => '/^(13|15|18)[0-9]{9}$/','message' => '請輸入正確的經辦人手機號碼.'),//array('certificate_id', 'match','pattern' => '/(.jpg|.gif|.png|\d)$/','message' => '請重新選擇認證映像並且尾碼只能是jpg、gif、png格式.'),array('phone', 'match','pattern' => '/^(\d{3}-|\d{4}-)?(\d{8}|\d{7})?$/','message' => '請輸入正確的有線電話號碼.'),array('fax', 'match','pattern' => '/^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/','message' => '請輸入正確的傳真號碼.'),//array('email_address', 'match','pattern' => '/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/','message' => '請輸入正確的郵箱.'),array('email_address','email','message'=>'請輸入正確的郵箱.'),//驗證密碼和確認密碼array("password2","compare","compareAttribute"=>"password","message"=>"兩次密碼不一致",'on'=>'register'),array("password2","compare","compareAttribute"=>"password","message"=>"兩次密碼不一致",'on'=>'regonter'),array('qq', 'match','pattern' => '/^[1-9]{1}[0-9]{4,11}$/','message' => '請輸入正確的QQ號碼.'),array('type,certificate_id,company_type, nationality,yyzz_id, status,level,create_by_id, create_time,update_time', 'numerical', 'integerOnly'=>true),array('verify', 'numerical', 'message' => '驗證碼不正確','integerOnly'=>true),array('name,user_type,tuijianren', 'length', 'max'=>20),array('password', 'length', 'max'=>100),array('email_address,business', 'length', 'max'=>50),array('communication_address,money, yhzh,yhmc,industry, company, register_address,yhdh,shangbiao,zhuanli,gongshang', 'length', 'max'=>255),array('role_id','default', 'setOnEmpty'=>true, 'value'=>10),array('shangbiao','default', 'setOnEmpty'=>true, 'value'=>'0,0'),array('zhuanli','default', 'setOnEmpty'=>true, 'value'=>'0,0'),array('gongshang','default', 'setOnEmpty'=>true, 'value'=>'0,0'),array('password','default', 'setOnEmpty'=>true, 'value'=>'123456'),/*驗證碼*/array('verify','checkVerify', 'on'=>'register'),array('email_address','checkemail', 'on'=>'regonter'),// array('certificate_id', 'file','allowEmpty'=>true,// 'types'=>'jpg, gif, png, doc, txt',// 'maxSize'=>1024 * 1024 * 10, // 10MB// 'tooLarge'=>'檔案大小不能超過10M!',// 'message'=>'請先上傳認證映像.'// ),// The following rule is used by search().// @todo Please remove those attributes that should not be searched.array('id,role_id,name, password,user_type, email_address,tuijianren,shangbiao,company_type,zhuanli,gongshang,money,yhzh,yhmc,yyzz_id,yhdh,type,level, phone, qq, mobile_phone, fax, communication_address, nationality, industry, company, business, register_address, certificate, status, create_by_id, create_time, update_time', 'safe', 'on'=>'search'),);}/* * 手機驗證碼校正 */public function checkVerify($attribute,$params) {$model=new Mess();$d_title = $model->find(array('condition'=>'suij=:suij and tel=:tel and type>:type and time>:time','params'=>array(':suij'=>$this->verify,':tel'=>$this->mobile_phone,':type'=>0,':time'=>(time()-3600)),'select'=>array('id')));//$d_title = $model->findByAttributes(array('suij'=>$this->verify,'tel'=>$this->mobile_phone),array('select'=>array('id')));if($d_title['id']<1){$this->addError('verify', "驗證碼不正確。");}else{if($this->password == $this->password2){$model->updateAll(array('type'=>0),array('condition'=>'suij=:sj','params'=>array(':sj'=>$this->verify)));}}}