后台添加管理员用户使用SignupForm类实现

步骤一、复制一份前台frontend/models/SignupForm.php 到后台模型文件夹中 backend/models/SignupForm.php

步骤二、明确需要修改的文件为:新的SignupForm类,AdminuserController类中的actionCreate方法,create视图文件

步骤三、

修改SignupForm类 的namespace为backend/models

修改后台添加用户的视图文件

修改SignupForm类中的规则和需求字段

修改signup()方法,创建后台账户并将SignupForm类中的属性传递给Adminuser类成员,并保存进Adminuser数据表,实现代码如下

SignupForm类

  1. <?php
  2. namespace backend\models;
  3.  
  4. use yii\base\Model;
  5. use common\models\Adminuser;
  6. use yii\helpers\VarDumper;
  7. /**
  8. * Signup form
  9. */
  10. class SignupForm extends Model
  11. {
  12. public $username;
  13. public $email;
  14. public $password;
  15. public $password_repeat;
  16. public $nickname;
  17. public $phone;
  18.  
  19. /**
  20. * {@inheritdoc}
  21. */
  22. public function rules()
  23. {
  24. return [
  25. ['username', 'trim'],
  26. ['username', 'required'],
  27. ['username', 'unique', 'targetClass' => '\common\models\Adminuser', 'message' => '用户名已存在!'],
  28. ['username', 'string', 'min' => 2, 'max' => 255],
  29.  
  30. ['email', 'trim'],
  31. ['email', 'required'],
  32. ['email', 'email'],
  33. ['email', 'string', 'max' => 255],
  34. ['email', 'unique', 'targetClass' => '\common\models\Adminuser', 'message' => '邮箱已存在!'],
  35.  
  36. ['password', 'required'],
  37. ['password', 'string', 'min' => 6],
  38. ['password_repeat', 'required'],
  39. ['password_repeat', 'compare','compareAttribute'=>'password','message'=>'两次输入的密码不一致'],
  40.  
  41. ['nickname', 'required'],
  42. ['email', 'string', 'max' => 128],
  43.  
  44. ['phone', 'required'],
  45. [['phone'], 'unique','targetClass' => '\common\models\Adminuser','message'=>'{attribute}已经被占用了'],
  46. ['phone','match','pattern'=>'/^1[0-9]{10}$/','message'=>'{attribute}必须为1开头的11位纯数字'],
  47. ];
  48. }
  49. public function attributeLabels()
  50. {
  51. return [
  52. 'id' => 'ID',
  53. 'username' => '用户名',
  54. 'password' => '密码',
  55. 'password_repeat' => '再次输入密码',
  56. 'email' => '邮箱',
  57. 'nickname' => '昵称',
  58. 'phone' => '手机号',
  59. ];
  60. }
  61. /**
  62. * Signs user up.
  63. *
  64. * @return User|null the saved model or null if saving fails
  65. */
  66. public function signup()
  67. {
  68. if (!$this->validate()) {
  69. return null;
  70. }
  71.  
  72. $user = new Adminuser();
  73. $user->username = $this->username;
  74. $user->nickname = $this->nickname;
  75. $user->phone = $this->phone;
  76. $user->email = $this->email;
  77. $user->setPassword($this->password);
  78. $user->generateAuthKey();
  79. $user->created_at = time();
  80. $user->updated_at = time();
  81. /*
  82. //保存调试
  83. $user->save();
  84. VarDumper::dump($user->errors);
  85. exit(0);
  86. */
  87. return $user->save() ? $user : null;
  88. }
  89. }

create视图文件

  1. <?php
  2.  
  3. use yii\helpers\Html;
  4. use yii\widgets\ActiveForm;
  5.  
  6. /* @var $this yii\web\View */
  7. /* @var $model common\models\Adminuser */
  8.  
  9. $this->title = 'Create Adminuser';
  10. $this->params['breadcrumbs'][] = ['label' => 'Adminusers', 'url' => ['index']];
  11. $this->params['breadcrumbs'][] = $this->title;
  12. ?>
  13. <div class="adminuser-create">
  14.  
  15. <h1><?= Html::encode($this->title) ?></h1>
  16.  
  17. <?php $form = ActiveForm::begin(); ?>
  18.  
  19. <?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
  20.  
  21. <?= $form->field($model, 'password')->passwordInput(['maxlength' => true]) ?>
  22. <?= $form->field($model, 'password_repeat')->passwordInput(['maxlength' => true]) ?>
  23. <?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>
  24.  
  25. <?= $form->field($model, 'nickname')->textInput(['maxlength' => true]) ?>
  26. <?= $form->field($model, 'phone')->textInput(['maxlength' => true]) ?>
  27. <div class="form-group">
  28. <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
  29. </div>
  30.  
  31. <?php ActiveForm::end(); ?>
  32.  
  33. </div>

AdminuserController类中actionCtreate方法修改

  1. <?php
  2. public function actionCreate()
  3. {
  4. $model = new SignupForm();
  5.  
  6. if ($model->load(Yii::$app->request->post())) {
  7. if($user = $model->signup()){
  8. return $this->redirect(['view', 'id' => $model->id]);
  9. }
  10.  
  11. }
  12.  
  13. return $this->render('create', [
  14. 'model' => $model,
  15. ]);
  16. }

YII2.0 后台手动添加用户功能的更多相关文章

  1. Yii2.0 GridView 新增添加按钮

    <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'col ...

  2. mysql 8.0给数据库添加用户和赋权

    -- 使用mysql 数据库 USE mysql -- 为mysql创建用户:case_dev 密码为:pass123 CREATE USER case_dev IDENTIFIED BY 'pass ...

  3. 17.Yii2.0框架模型添加记录

    目录 新建控制器 HomeController.php 新建model Article.php 新建控制器 HomeController.php D:\xampp\htdocs\yii\control ...

  4. yii2.0用户登录,退出判断(摘录)

    文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101ix13.html 判断用户是否登录 在 Yii2.0 里面,判断用户是否已经登录,我们用下面的代码即可 ...

  5. centos 添加用户

    测试环境:CentOS 6.0 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy   // ...

  6. jquery.validate.js使用说明——后台添加用户邮箱功能:非空、不能重复、格式正确

    重点内容为:  jQuery验证控件jquery.validate.js使用说明+中文API[http://www.tuicool.com/articles/iABvI3] 简单教程可以参考[jQue ...

  7. MVC5 网站开发之七 用户功能 1、角色的后台管理

    角色是网站中都有的一个功能,用来区分用户的类型.划分用户的权限,这次实现角色列表浏览.角色添加.角色修改和角色删除. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 ...

  8. MVC5 网站开发之七 用户功能 2 用户添加和浏览

    目录 MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网站开发之五 展示层架 ...

  9. 2------------NLPIR(ICTCLAS2016)分词系统添加用户词典功能

    备注:win7 64位系统,netbeans编程 基本代码框架参见我的另一篇文章:NLPIR分词功能 代码实现: package cwordseg; import java.io.Unsupporte ...

随机推荐

  1. CCF201412-1 门禁系统

    试题编号: 201412-1 试题名称: 门禁系统 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每位读者有一个 ...

  2. 使用Axure管理团队项目以及分享原型

    第一部分:使用Axure管理团队项目 首先,你要有一个Axure账户 呵呵哒.注册地址:http://share.axure.com 发起团队项目 在浏览器登录 Axure share(网速很卡很卡) ...

  3. mysql 免安装版安装(window7)

    初次使用mysql免安装版步骤: 1.设置环境变量,将mysql 加压文件路径添加到环境变量path中(作用是不用每次都切换路径) 控制面板>系统和安全>系统>高级系统设置 2.安装 ...

  4. c#编程指南(六) 类索引器(Class Indexer)

    类索引器,可以使得你使用数组一样的方式来访问类的数据. 这种访问多见于数组,列表,词典,哈希表的快捷访问. 实际上写法很简单,写成:public T1 this[T2 i] 代码如下: using S ...

  5. Oracle案例06—— OGG-01098 Could not flush "./dirdat/e1000004383" (error 28, No space left on device)

    一.前言 自从换了新环境,各种问题层出不穷,如果不是之前积累的经验丰富,估计都歇菜了,看来作为数据库全栈工程师(oracle/mysql/sqlserver/sap hana/pg/mongodb/r ...

  6. 设置导出的excel数据

    /** * 设置导出的excel数据 * @param type $objPHPExcel * @param type $colModel * @param type $grid */public f ...

  7. QT的QCombox

    https://stackoverflow.com/questions/29939990/qcombobox-style-for-choosed-item-in-drop-down-list

  8. Jquery学习---Easy UI 框架

    Jquery的easyui 1.1. easyui的目录分析 以 jquery Easy UI 1.3.2 版本学习 demo 实例 locale 国际化信息 plugins 框架一些插件 src 源 ...

  9. JS 获取指定日期的前几天,后几天

    function getNextDate(date,day) { var dd = new Date(date); dd.setDate(dd.getDate() + day); var y = dd ...

  10. iotop使用详解

    iotop是top和iostat程序的混合体,能够显示系统中所有运行进程并将进程根据I/O统计信息排序. 这个软件使用了Linux内核的一些新特性,所以需要2.6.20或者更新的内核. 一般默认情况下 ...