码迷,mamicode.com
首页 > 其他好文 > 详细

YII用户注冊和用户登录(三)之模型中规则制定和分析

时间:2017-05-24 11:16:10      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:track   定义   rac   unique   sdn   实现   表单验证   分析   water   

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用户注冊和用户登录(三)之模型中规则制定和分析

标签:track   定义   rac   unique   sdn   实现   表单验证   分析   water   

原文地址:http://www.cnblogs.com/liguangsunls/p/6897760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!