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


Posted in PHP onDecember 22, 2015

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

PHP 相关文章推荐
PHP通用检测函数集合
Feb 08 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
YII中assets的使用示例
Jul 31 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
初识ThinkPHP控制器
Apr 07 PHP
Centos6.5和Centos7 php环境搭建方法
May 27 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
Laravel如何实现自动加载类
Oct 14 PHP
PHP内核探索之解释器的执行过程
Dec 22 #PHP
PHP内核探索之变量
Dec 22 #PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 #PHP
PHP输入流php://input实例讲解
Dec 22 #PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 #PHP
php上传图片并压缩的实现方法
Dec 22 #PHP
PHP实现图片上传并压缩
Dec 22 #PHP
You might like
用PHP创建PDF中文文档
2006/10/09 PHP
ajax缓存问题解决途径
2006/12/06 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
详解Python中的测试工具
2019/06/09 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
python如何统计代码运行的时长
2019/07/24 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
找规律教学反思
2016/02/23 职场文书
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL