yii2.0实现验证用户名与邮箱功能
本文为大家分享了yii2.0实现验证用户名与邮箱功能的相关代码,具体内容如下
视图signup.php代码:
<?php useyii\helpers\Html; useyii\bootstrap\ActiveForm; /*@var$thisyii\web\View*/ /*@var$formyii\bootstrap\ActiveForm*/ /*@var$model\frontend\models\SignupForm*/ $this->title='注册'; $this->params['breadcrumbs'][]=$this->title; ?> <divclass="site-signup"> <h1><?=Html::encode($this->title)?></h1> <p>Pleasefilloutthefollowingfieldstosignup:</p> <divclass="row"> <divclass="col-lg-5"> <?php$form=ActiveForm::begin([ 'id'=>'form-signup', 'enableAjaxValidation'=>true, 'enableClientValidation'=>true, ]);?> <?=$form->field($model,'username')?> <?=$form->field($model,'email')?> <?=$form->field($model,'password')->passwordInput()?> <?=$form->field($model,'password_compare')->passwordInput()?> <divclass="form-group"> <?=Html::submitButton('Signup',['class'=>'btnbtn-primary','name'=>'signup-button'])?> </div> <?phpActiveForm::end();?> </div> </div> </div>
控制器SiteController.php
publicfunctionactionSignup() { $model=newSignupForm(); $model->load($_POST); if(Yii::$app->request->isAjax){ Yii::$app->response->format=\yii\web\Response::FORMAT_JSON; return\yii\bootstrap\ActiveForm::validate($model); } if($model->load(Yii::$app->request->post())){ if($user=$model->signup()){ if(Yii::$app->getUser()->login($user)){ return$this->goHome(); } } } return$this->render('signup',[ 'model'=>$model, ]); }
模型SignupForm.php
usecommon\models\User; useyii\base\Model; useYii; /** *Signupform */ classSignupFormextendsModel { public$username; public$email; public$password; public$password_compare; /** *@inheritdoc */ publicfunctionrules() { return[ ['username','filter','filter'=>'trim'], ['username','required'], ['username','unique','targetClass'=>'\common\models\User','message'=>'用户名已存在.'], ['username','string','min'=>2,'max'=>255], ['email','filter','filter'=>'trim'], ['email','required'], ['email','email'], ['email','unique','targetClass'=>'\common\models\User','message'=>'邮箱名已存在.'], [['password','password_compare'],'required'], [['password','password_compare'],'string','min'=>6,'max'=>16,'message'=>'{attribute}是6-16位数字或字母'], ['password_compare','compare','compareAttribute'=>'password','message'=>'两次密码不一致'], ]; } /** *Signsuserup. * *@returnUser|nullthesavedmodelornullifsavingfails */ publicfunctionsignup() { if($this->validate()){ $user=newUser(); $user->username=$this->username; $user->email=$this->email; $user->setPassword($this->password); $user->generateAuthKey(); if($user->save()){ return$user; } } returnnull; } }
以上就是本文的全部内容,帮助大家实现yii2.0验证功能。