yii2.0实现验证用户名与邮箱功能

前端技术 2023/09/05 PHP

本文为大家分享了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

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。