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验证功能。