您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP框架 > Yii Framework

Yii Framework用户注册表单验证实例

作者:  来源:互联网  日期:2013-11-14 16:40:45
收藏  评论:( 0 )  阅读:1105

Yii Framework用户注册表单验证实例:

视图层:register.php

<?php 
//使用小物件生成form元素 
$form=$this->beginWidget('CActiveForm'); 
?> 
                          
<!--用户名--> 
<?php echo $form->labelEx($model,'username');?> 
<?php echo $form->textField($model,'username');?> 
<?php echo $form->error($model,'username');?> 
<br> 
                          
<!--密码--> 
<?php echo $form->labelEx($model,'password');?> 
<?php echo $form->passwordField($model,'password');?> 
<?php echo $form->error($model,'password');?> 
<br> 
                          
<!--确认密码--> 
<?php echo $form->labelEx($model,'password2');?> 
<?php echo $form->passwordField($model,'password2');?> 
<?php echo $form->error($model,'password2');?> 
<br> 
                           
<!--邮箱--> 
<?php echo $form->labelEx($model,'email');?> 
<?php echo $form->textField($model,'email');?> 
<?php echo $form->error($model,'email');?> 
<br> 
                          
<!--性别--> 
<?php echo $form->labelEx($model,'sex');?> 
<?php  echo $form->radioButtonList($model,'sex',array(1=>'男',2=>'女'),array("separator"=>"&nbsp;"));?> 
<br> 
                          
<!--年级--> 
<?php echo $form->labelEx($model,'grade');?> 
<?php echo $form->dropDownList($model,'grade',array(0=>"--请选择--",1=>"2010级",2=>"2011级",3=>"2012级"));?> 
<?php echo $form->error($model,'grade');?> 
<br> 
                          
<?php echo $form->labelEx($model,'hobby');?> 
<?php echo $form->checkBoxList($model,'hobby',array(1=>"篮球",2=>"足球",3=>"排球"),array("separator"=>"&nbsp;"));?> 
<?php echo $form->error($model,'hobby');?> 
<!--提交--> 
<?php echo CHtml::submitButton('提交');?> 
<?php 
$this->endWidget(); 
?>

model层的代码如下:User.php

<?php 
                   
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */ 
class User extends CActiveRecord{ 
    //创建一个模型的对象  静态 
    public $password2;//非数据库的字段,但是在view中需要用到 
    public static function model($className = __CLASS__) { 
        return parent::model($className); 
    } 
                       
    //返回当前数据表的名字 
    public function tableName() { 
        //parent::tableName(); 
        return '{{user}}';//这样写可以省略前缀 
    } 
                       
    //设置标签的显示名字 
    public function attributeLabels() { 
       return array( 
           "username"=>"姓名", 
           "password"=>"密码", 
           "password2"=>"确认密码", 
           "email"=>"邮箱", 
           "sex"=>"性别", 
           "grade"=>"年级", 
           "hobby"=>"爱好", 
       ); 
    } 
    //验证表单域 
    public function rules() { 
        return array( 
            array("username","required","message"=>"用户名不能为空"), 
                    
            array("password","required","message"=>"密码不能为空"), 
                               
            //验证密码和确认密码 
            array("password2","compare","compareAttribute"=>"password","message"=>"两次密码不一致"), 
            //验证邮箱 
            array("email","email","allowEmpty"=>false,"message"=>"邮箱格式不正确"), 
                               
            //验证年级 
            array("grade","in","range"=>array(1,2,3),"message"=>"请选择年级"), 
                               
            //验证爱好,使用自定义规则 
            array("hobby","checkHobby"), 
        ); 
    } 
    //验证爱好 
   function checkHobby(){ 
        $this->hobby; 
        $len= strlen($this->hobby); 
        if($len<3){ 
            $this->addError("hobby","爱好至少为2个以上"); 
        } 
    } 
} 
?>

control层的代码如下:

<?php
 //信息添加  添加显示页面和添加处理使用同一个方法 
    public function actionAdd(){ 
        $user=new User(); 
        if(isset($_POST['User'])){ 
//            foreach ($_POST['User'] as $k =>$v){ 
//                $user->$k=$v; 
//            } 
            if(is_array($_POST['User']['hobby'])) 
                $_POST['User']['hobby']=  implode(",", $_POST['User']['hobby']); 
            //print_r($_POST['User']); 
            $user->attributes=$_POST['User']; 
            if($user->save()){ 
                echo 'success'; 
            }else{ 
                echo 'error'; 
            } 
        } 
        $this->renderPartial("new",array("model"=>$user)); 
    } 
?>

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



除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/yii/639.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论