Yii2.0-advanced-5—添加重复密码和验证码

来源:互联网 发布:linux 激活网卡 编辑:程序博客网 时间:2024/05/18 00:43

添加重复密码和验证码:

打开/frontend/models/SignupForm.php

class SignupForm extends Model{    public $username;    public $email;    public $password;    /**     * @inheritdoc     */    public function rules()    {        return [            ['username', 'filter', 'filter' => 'trim'],            ['username', 'required'],            ['username', 'unique', 'targetClass' => '\common\models\User', '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' => '\common\models\User', '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中添加

    public function actions()    {        return [            'captcha' => [                'class' => 'yii\captcha\CaptchaAction',                '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' => '\common\models\User', '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' => '\common\models\User', 'message' => '该邮箱已经被注册!'],            [['password','repassword'], 'required'],            [['password','repassword'], 'string', 'min' => 6],            ['repassword', 'compare', 'compareAttribute' => 'password','message'=>'两次输入的密码不一致!'],                        ['verifyCode', 'captcha'],        ];    }        ....


验证一下效果:

blob.png

0 0