• 技术文章 >php教程 >PHP开发

    yii2.0 模型rules验证详解

    黄舟黄舟2017-01-03 09:42:56原创506
    Yii2自带的注册可以作为网站的注册功能,但添加重复密码和验证码会更加完美!

    问题:

    用户名没有做严格的限制,类似“111”,“123456”,“_____111”这样的的用户名都是被允许的,那么如何限制用户输入我们所希望的用户名呢?

    一般的注册,都有重复输入密码的input框,是为了让用户再次确认自己输入的密码,如何添加呢?

    为了提高注册用户的质量,防止批量注册,添加验证码是不错的选择,如何加?

    如何在不修改逻辑代码的情况下完美解决以上三个问题?看了下面的教程,一目了然!

    以高级版2.0.6为例,打开/frontend/models/SignupForm.php

    ,
                ['username', 'required'],
                ['username', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => 'This username has already been taken.'],
                ['username', 'string', 'min' => 2, 'max' => 255],
    
                ['email', 'filter', 'filter' => 'trim'],
                ['email', 'required'],
                ['email', 'email'],
                ['email', 'string', 'max' => 255],
                ['email', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => 'This email address has already been taken.'],
    
                ['password', 'required'],
                ['password', 'string', 'min' => 6],
            ];
        }
    
    只需修改rules规则即可完美实现
    
    a.添加用户字符限制,6-16位
    
    ['username', 'string', 'min' => 6, 'max' => 16],
    
    输入限制:用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。
    
    ['username', 'match','pattern'=>'/^[(x{4E00}-x{9FA5})a-zA-Z]+[(x{4E00}-x{9FA5})a-zA-Z_d]*$/u',
    'message'=>'用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。'],
    
    b.添加重复密码字段
    
    public $repassword;
    
      一般重复密码与密码的字段验证基本上是一致的,所以可以在password中添加repassword,并添加两次输入一致的限制
    
    [['password','repassword'], 'required'],
    [['password','repassword'], 'string', 'min' => 6],
    ['repassword', 'compare', 'compareAttribute' => 'password','message'=>'两次输入的密码不一致!'],
    
    c.添加验证码字段
    
    public $verifyCode;
    
      验证码有自带的扩展,只需添加以下代码即可
    
    ['verifyCode', 'captcha'],
    
    本例为SiteController中添加[/b]
    
        public function actions()
        {
            return [
                'captcha' => [
                    'class' => 'yiicaptchaCaptchaAction',
                    'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
                ],
            ];
        }

    修改之后的规则

    class SignupForm extends Model
    {
    public $username;
    public $email;
    public $password;
    
    public $repassword;
    public $verifyCode;
    
    public function rules()
    {
    return [
    ['username', 'filter', 'filter' => 'trim'],
    ['username', 'required'],
    ['username', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => '该用户名已被使用!'],
    ['username', 'string', 'min' => 6, 'max' => 16],
    ['username', 'match','pattern'=>'/^[(x{4E00}-x{9FA5})a-zA-Z]+[(x{4E00}-x{9FA5})a-zA-Z_d]*$/u',
    'message'=>'用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。'],
    
    ['email', 'filter', 'filter' => 'trim'],
    ['email', 'required'],
    ['email', 'email'],
    ['email', 'string', 'max' => 255],
    ['email', 'unique', 'targetClass' => 'commonmodelsUser', 'message' => '该邮箱已经被注册!'],
    
    [['password','repassword'], 'required'],
    [['password','repassword'], 'string', 'min' => 6],
    ['repassword', 'compare', 'compareAttribute' => 'password','message'=>'两次输入的密码不一致!'],
    
    ['verifyCode', 'captcha'],
    ];
    }
    ....

    验证一下效果

    827.png

    以上就是yii2.0 模型rules验证详解的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:yii2.0,rules验证
    上一篇:Yii2.0 ActiveForm组件的ajax提交方法 下一篇:yii2.0 加密解密处理方法
    大前端线上培训班

    相关文章推荐

    • PHP使用glob函数遍历目录或文件夹的方法• centos yum 安装 mongodb 以及php扩展• PHP中session使用方法详解第1/2页• Symfony2实现从数据库获取数据的方法小结• Zend Framework 入门(1)—快速上手

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网