yii用户注册的表单验证

来源:互联网 发布:淘宝生意参谋情报竞争 编辑:程序博客网 时间:2024/05/22 13:25

注册表单的验证

视图层:register.PHP 

[php] view plain copy print?
  1. <?php  
  2. //使用小物件生成form元素  
  3. $form=$this->beginWidget('CActiveForm');  
  4. ?>  
  5.   
  6. <!--用户名-->  
  7. <?php echo $form->labelEx($model,'username');?>  
  8. <?php echo $form->textField($model,'username');?>  
  9. <?php echo $form->error($model,'username');?>  
  10. <br>  
  11.   
  12. <!--密码-->  
  13. <?php echo $form->labelEx($model,'password');?>  
  14. <?php echo $form->passwordField($model,'password');?>  
  15. <?php echo $form->error($model,'password');?>  
  16. <br>  
  17.   
  18. <!--确认密码-->  
  19. <?php echo $form->labelEx($model,'password2');?>  
  20. <?php echo $form->passwordField($model,'password2');?>  
  21. <?php echo $form->error($model,'password2');?>  
  22. <br>  
  23.    
  24. <!--邮箱-->  
  25. <?php echo $form->labelEx($model,'email');?>  
  26. <?php echo $form->textField($model,'email');?>  
  27. <?php echo $form->error($model,'email');?>  
  28. <br>  
  29.   
  30. <!--性别-->  
  31. <?php echo $form->labelEx($model,'sex');?>  
  32. <?php  echo $form->radioButtonList($model,'sex',array(1=>'男',2=>'女'),array("separator"=>"&nbsp;"));?>  
  33. <br>  
  34.   
  35. <!--年级-->  
  36. <?php echo $form->labelEx($model,'grade');?>  
  37. <?php echo $form->dropDownList($model,'grade',array(0=>"--请选择--",1=>"2010级",2=>"2011级",3=>"2012级"));?>  
  38. <?php echo $form->error($model,'grade');?>  
  39. <br>  
  40.   
  41. <?php echo $form->labelEx($model,'hobby');?>  
  42. <?php echo $form->checkBoxList($model,'hobby',array(1=>"篮球",2=>"足球",3=>"排球"),array("separator"=>"&nbsp;"));?>  
  43. <?php echo $form->error($model,'hobby');?>  
  44. <!--提交-->  
  45. <?php echo CHtml::submitButton('提交');?>  
  46. <?php  
  47. $this->endWidget();  
  48. ?>  

model层的代码如下:User.php
[php] view plain copy print?
  1. <?php  
  2.   
  3. /* 
  4.  * To change this template, choose Tools | Templates 
  5.  * and open the template in the editor. 
  6.  */  
  7. class User extends CActiveRecord{  
  8.     //创建一个模型的对象  静态  
  9.     public $password2;//非数据库的字段,但是在view中需要用到  
  10.     public static function model($className = __CLASS__) {  
  11.         return parent::model($className);  
  12.     }  
  13.       
  14.     //返回当前数据表的名字  
  15.     public function tableName() {  
  16.         //parent::tableName();  
  17.         return '{{user}}';//这样写可以省略前缀  
  18.     }  
  19.       
  20.     //设置标签的显示名字  
  21.     public function attributeLabels() {  
  22.        return array(  
  23.            "username"=>"姓名",  
  24.            "password"=>"密码",  
  25.            "password2"=>"确认密码",  
  26.            "email"=>"邮箱",  
  27.            "sex"=>"性别",  
  28.            "grade"=>"年级",  
  29.            "hobby"=>"爱好",  
  30.        );  
  31.     }  
  32.     //验证表单域  
  33.     public function rules() {  
  34.         return array(  
  35.             array("username","required","message"=>"用户名不能为空"),  
  36.    
  37.             array("password","required","message"=>"密码不能为空"),  
  38.               
  39.             //验证密码和确认密码  
  40.             array("password2","compare","compareAttribute"=>"password","message"=>"两次密码不一致"),  
  41.             //验证邮箱  
  42.             array("email","email","allowEmpty"=>false,"message"=>"邮箱格式不正确"),  
  43.               
  44.             //验证年级  
  45.             array("grade","in","range"=>array(1,2,3),"message"=>"请选择年级"),  
  46.               
  47.             //验证爱好,使用自定义规则  
  48.             array("hobby","checkHobby"),  
  49.         );  
  50.     }  
  51.     //验证爱好  
  52.    function checkHobby(){  
  53.         $this->hobby;  
  54.         $lenstrlen($this->hobby);  
  55.         if($len<3){  
  56.             $this->addError("hobby","爱好至少为2个以上");  
  57.         }  
  58.     }  
  59. }  
  60. ?>  

control层的代码如下:
[php] view plain copy print?
  1.  //信息添加  添加显示页面和添加处理使用同一个方法  
  2.     public function actionAdd(){  
  3.         $user=new User();  
  4.         if(isset($_POST['User'])){  
  5. //            foreach ($_POST['User'] as $k =>$v){  
  6. //                $user->$k=$v;  
  7. //            }  
  8.             if(is_array($_POST['User']['hobby']))  
  9.                 $_POST['User']['hobby']=  implode(","$_POST['User']['hobby']);  
  10.             //print_r($_POST['User']);  
  11.             $user->attributes=$_POST['User'];  
  12.             if($user->save()){  
  13.                 echo 'success';  
  14.             }else{  
  15.                 echo 'error';  
  16.             }  
  17.         }  
  18.         $this->renderPartial("new",array("model"=>$user));  
  19.     }  
其中,表单的自动验证,在model层实现,表单元素的名称与数据库中的字段名字一致,可设置错误信息进行提示
0 0
原创粉丝点击