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

Posted liguangsunls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YII用户注冊和用户登录之模型中规则制定和分析相关的知识,希望对你有一定的参考价值。

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用户注冊和用户登录之模型中规则制定和分析的主要内容,如果未能解决你的问题,请参考以下文章

YII用户注冊表单的实现熟悉前台各个表单元素操作方式

Yii2学习笔记之场景

YII用户注册和用户登录之登录和注册在视图通过表单使用YII小物件并分析

discuz新的单点论坛(不依赖UCenter)

京东股权众筹平台的玩法和价值

协议的注冊与维护——ndpi源代码分析