当前位置:首页 > CMS教程 > 其它CMS > 列表

yii用户注册表单验证实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-02 10:53:13 浏览: 评论:0 

这篇文章主要介绍了yii用户注册表单验证,以实例形式详细分析了基于yii框架的用户注册表单验证功能模型,视图及控制器层具体实现技巧,需要的朋友可以参考下。

本文实例讲述了yii用户注册表单验证实现方法,分享给大家供大家参考,具体如下:

视图层:register.php

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

model层的代码如下:User.php

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

control层的代码如下:

  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)); 

其中,表单的自动验证,在model层实现,表单元素的名称与数据库中的字段名字一致,可设置错误信息进行提示。

Tags: yii用户注册表单验证

分享到: