YII2.0 后台手动添加用户功能
后台添加管理员用户使用SignupForm类实现
步骤一、复制一份前台frontend/models/SignupForm.php 到后台模型文件夹中 backend/models/SignupForm.php
步骤二、明确需要修改的文件为:新的SignupForm类,AdminuserController类中的actionCreate方法,create视图文件
步骤三、
修改SignupForm类 的namespace为backend/models
修改后台添加用户的视图文件
修改SignupForm类中的规则和需求字段
修改signup()方法,创建后台账户并将SignupForm类中的属性传递给Adminuser类成员,并保存进Adminuser数据表,实现代码如下
SignupForm类
- <?php
- namespace backend\models;
- use yii\base\Model;
- use common\models\Adminuser;
- use yii\helpers\VarDumper;
- /**
- * Signup form
- */
- class SignupForm extends Model
- {
- public $username;
- public $email;
- public $password;
- public $password_repeat;
- public $nickname;
- public $phone;
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- ['username', 'trim'],
- ['username', 'required'],
- ['username', 'unique', 'targetClass' => '\common\models\Adminuser', 'message' => '用户名已存在!'],
- ['username', 'string', 'min' => 2, 'max' => 255],
- ['email', 'trim'],
- ['email', 'required'],
- ['email', 'email'],
- ['email', 'string', 'max' => 255],
- ['email', 'unique', 'targetClass' => '\common\models\Adminuser', 'message' => '邮箱已存在!'],
- ['password', 'required'],
- ['password', 'string', 'min' => 6],
- ['password_repeat', 'required'],
- ['password_repeat', 'compare','compareAttribute'=>'password','message'=>'两次输入的密码不一致'],
- ['nickname', 'required'],
- ['email', 'string', 'max' => 128],
- ['phone', 'required'],
- [['phone'], 'unique','targetClass' => '\common\models\Adminuser','message'=>'{attribute}已经被占用了'],
- ['phone','match','pattern'=>'/^1[0-9]{10}$/','message'=>'{attribute}必须为1开头的11位纯数字'],
- ];
- }
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'username' => '用户名',
- 'password' => '密码',
- 'password_repeat' => '再次输入密码',
- 'email' => '邮箱',
- 'nickname' => '昵称',
- 'phone' => '手机号',
- ];
- }
- /**
- * Signs user up.
- *
- * @return User|null the saved model or null if saving fails
- */
- public function signup()
- {
- if (!$this->validate()) {
- return null;
- }
- $user = new Adminuser();
- $user->username = $this->username;
- $user->nickname = $this->nickname;
- $user->phone = $this->phone;
- $user->email = $this->email;
- $user->setPassword($this->password);
- $user->generateAuthKey();
- $user->created_at = time();
- $user->updated_at = time();
- /*
- //保存调试
- $user->save();
- VarDumper::dump($user->errors);
- exit(0);
- */
- return $user->save() ? $user : null;
- }
- }
create视图文件
- <?php
- use yii\helpers\Html;
- use yii\widgets\ActiveForm;
- /* @var $this yii\web\View */
- /* @var $model common\models\Adminuser */
- $this->title = 'Create Adminuser';
- $this->params['breadcrumbs'][] = ['label' => 'Adminusers', 'url' => ['index']];
- $this->params['breadcrumbs'][] = $this->title;
- ?>
- <div class="adminuser-create">
- <h1><?= Html::encode($this->title) ?></h1>
- <?php $form = ActiveForm::begin(); ?>
- <?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
- <?= $form->field($model, 'password')->passwordInput(['maxlength' => true]) ?>
- <?= $form->field($model, 'password_repeat')->passwordInput(['maxlength' => true]) ?>
- <?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>
- <?= $form->field($model, 'nickname')->textInput(['maxlength' => true]) ?>
- <?= $form->field($model, 'phone')->textInput(['maxlength' => true]) ?>
- <div class="form-group">
- <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
- </div>
- <?php ActiveForm::end(); ?>
- </div>
AdminuserController类中actionCtreate方法修改
- <?php
- public function actionCreate()
- {
- $model = new SignupForm();
- if ($model->load(Yii::$app->request->post())) {
- if($user = $model->signup()){
- return $this->redirect(['view', 'id' => $model->id]);
- }
- }
- return $this->render('create', [
- 'model' => $model,
- ]);
- }
YII2.0 后台手动添加用户功能的更多相关文章
- Yii2.0 GridView 新增添加按钮
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'col ...
- mysql 8.0给数据库添加用户和赋权
-- 使用mysql 数据库 USE mysql -- 为mysql创建用户:case_dev 密码为:pass123 CREATE USER case_dev IDENTIFIED BY 'pass ...
- 17.Yii2.0框架模型添加记录
目录 新建控制器 HomeController.php 新建model Article.php 新建控制器 HomeController.php D:\xampp\htdocs\yii\control ...
- yii2.0用户登录,退出判断(摘录)
文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101ix13.html 判断用户是否登录 在 Yii2.0 里面,判断用户是否已经登录,我们用下面的代码即可 ...
- centos 添加用户
测试环境:CentOS 6.0 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy // ...
- jquery.validate.js使用说明——后台添加用户邮箱功能:非空、不能重复、格式正确
重点内容为: jQuery验证控件jquery.validate.js使用说明+中文API[http://www.tuicool.com/articles/iABvI3] 简单教程可以参考[jQue ...
- MVC5 网站开发之七 用户功能 1、角色的后台管理
角色是网站中都有的一个功能,用来区分用户的类型.划分用户的权限,这次实现角色列表浏览.角色添加.角色修改和角色删除. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 ...
- MVC5 网站开发之七 用户功能 2 用户添加和浏览
目录 MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网站开发之五 展示层架 ...
- 2------------NLPIR(ICTCLAS2016)分词系统添加用户词典功能
备注:win7 64位系统,netbeans编程 基本代码框架参见我的另一篇文章:NLPIR分词功能 代码实现: package cwordseg; import java.io.Unsupporte ...
随机推荐
- CCF201412-1 门禁系统
试题编号: 201412-1 试题名称: 门禁系统 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每位读者有一个 ...
- 使用Axure管理团队项目以及分享原型
第一部分:使用Axure管理团队项目 首先,你要有一个Axure账户 呵呵哒.注册地址:http://share.axure.com 发起团队项目 在浏览器登录 Axure share(网速很卡很卡) ...
- mysql 免安装版安装(window7)
初次使用mysql免安装版步骤: 1.设置环境变量,将mysql 加压文件路径添加到环境变量path中(作用是不用每次都切换路径) 控制面板>系统和安全>系统>高级系统设置 2.安装 ...
- c#编程指南(六) 类索引器(Class Indexer)
类索引器,可以使得你使用数组一样的方式来访问类的数据. 这种访问多见于数组,列表,词典,哈希表的快捷访问. 实际上写法很简单,写成:public T1 this[T2 i] 代码如下: using S ...
- Oracle案例06—— OGG-01098 Could not flush "./dirdat/e1000004383" (error 28, No space left on device)
一.前言 自从换了新环境,各种问题层出不穷,如果不是之前积累的经验丰富,估计都歇菜了,看来作为数据库全栈工程师(oracle/mysql/sqlserver/sap hana/pg/mongodb/r ...
- 设置导出的excel数据
/** * 设置导出的excel数据 * @param type $objPHPExcel * @param type $colModel * @param type $grid */public f ...
- QT的QCombox
https://stackoverflow.com/questions/29939990/qcombobox-style-for-choosed-item-in-drop-down-list
- Jquery学习---Easy UI 框架
Jquery的easyui 1.1. easyui的目录分析 以 jquery Easy UI 1.3.2 版本学习 demo 实例 locale 国际化信息 plugins 框架一些插件 src 源 ...
- JS 获取指定日期的前几天,后几天
function getNextDate(date,day) { var dd = new Date(date); dd.setDate(dd.getDate() + day); var y = dd ...
- iotop使用详解
iotop是top和iostat程序的混合体,能够显示系统中所有运行进程并将进程根据I/O统计信息排序. 这个软件使用了Linux内核的一些新特性,所以需要2.6.20或者更新的内核. 一般默认情况下 ...