Yii2.0-advanced 高级版项目搭建(四) [基础教程]

作者:上班偷偷打酱油 发布于:2015-11-24 浏览:24694次 收藏

上一篇:Yii2.0-advanced 高级版项目搭建(三)


添加重复密码和验证码:

打开/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


下一篇:Yii2.0-advanced 高级版项目搭建(五)

酱油出品,必是精品!O(∩_∩)O~,未经本站授权,禁止私自转载!

如果文章对您有所帮助,希望继续支持我们,您的支持是我们最大的动力 ¥打赏
声明:文章内容由作者原创或整理,未经允许,不得转载!
  • 评论于 2017-09-24 03:33:02

    gghh

    回复
  • 评论于 2017-08-07 17:34:15

    就到这没有了吗

    回复
  • 评论于 2016-11-29 14:47:59

    虽然按照上面步骤做了,但是我的注册页面依然是原来的样子,重复密码和验证码都没有加进去的

    回复于 2016-12-05 11:35:46 回复

    前台

    没加

    回复
  • 评论于 2016-10-11 19:03:29

    blob.png为什么不显示提示信息?代码都是按步骤来的。

    回复
  • 评论于 2016-05-24 21:40:54

    attributeLabels()中如何使用 yii::t()?

    回复于 2016-05-25 10:30:02 回复
    直接用,替换成Yii::t('common','test');
    回复于 2016-05-29 11:12:56 回复

    @上班偷偷打酱油 搞定了,要use 一下 yii

    回复
  • 评论于 2016-04-23 00:50:34

    但是登录那里的页面上还是英文的?

    回复于 2016-04-23 00:55:52 回复
    原来是在目录common/models/LoginFrom.php中添加 感谢 @jctml
    回复
  • 评论于 2016-03-24 11:10:47

    为什么没有view里面的页面的代码呢

    回复
  • 评论于 2016-03-17 15:30:26

    第五讲代码

    $menuItems[]=[

    'label'=> Yii::$app->user-identity->username,

    'items' => [

    [

    'label' => '<i class = "icon-signout"></i>退出',

    'url => ['/site/logout'],

    'linkOptions' => ['data-method'=>'post'],

    ]

    ],

    ]


    Nav::widget([

    'options'=> ['class' => 'navbar-nav navbar-right'],

    'encodeLabels' => false;//关闭HTML转码

    'items'=> $menuItems,

    ]);

    =====================================================================

    //font-awesome路径

    statics/css/front-awesome/css/font-awesome.min.css

    ======================================================================

    酱油君辛苦,多多录视频吧

    回复
  • 评论于 2016-03-17 15:23:17

    登录界面的表单,在什么模块下修改为attributeLabels属性

    回复于 2016-03-17 16:16:54 回复
    在目录common/models/LoginFrom.php中添加
    回复
  • 评论于 2016-01-20 16:55:41

    Yii2.0-advanced 高级版项目搭建(五)  去哪里了?

    回复于 2016-01-21 13:38:27 回复
    看视频吧~文字教程么有更新
    回复于 2016-01-21 14:55:12 回复

    收到

    回复于 2016-01-21 18:49:41 回复
    @newjz003
    回复于 2016-03-21 09:51:18 回复
    @上班偷偷打酱油 喜欢文字教程 视频教程太费时间
    回复
您需要登录后才可以评论。登录 | 立即注册