本文为大家分享了yii2.0实现验证用户名与邮箱功能的相关代码,具体内容如下
视图signup.php代码:
<?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
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
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验证功能。
本文地址:https://www.stayed.cn/item/13079
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我