本文为大家分享了yii2.0实现验证用户名与邮箱功能的相关代码,具体内容如下
视图signup.php代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \frontend\models\SignupForm */
$this ->title = '注册' ;
$this ->params[ 'breadcrumbs' ][] = $this ->title;
?>
<div class = "site-signup" >
<h1><?= Html::encode( $this ->title) ?></h1>
<p>Please fill out the following fields to signup:</p>
<div class = "row" >
<div class = "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() ?>
<div class = "form-group" >
<?= Html::submitButton( 'Signup' , [ 'class' => 'btn btn-primary' , 'name' => 'signup-button' ]) ?>
</div>
<?php ActiveForm:: end (); ?>
</div>
</div>
</div>
|
控制器SiteController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public function actionSignup()
{
$model = new SignupForm();
$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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
use common\models\User;
use yii\base\Model;
use Yii;
/**
* Signup form
*/
class SignupForm extends Model
{
public $username ;
public $email ;
public $password ;
public $password_compare ;
/**
* @inheritdoc
*/
public function rules()
{
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' => '两次密码不一致' ],
];
}
/**
* Signs user up.
*
* @return User|null the saved model or null if saving fails
*/
public function signup()
{
if ( $this ->validate()) {
$user = new User();
$user ->username = $this ->username;
$user ->email = $this ->email;
$user ->setPassword( $this ->password);
$user ->generateAuthKey();
if ( $user ->save()) {
return $user ;
}
}
return null;
}
}
|
以上就是本文的全部内容,帮助大家实现yii2.0验证功能。