本文为大家分享了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验证功能。