后台添加管理员用户使用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 后台手动添加用户功能的更多相关文章

  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. canvas中的非零环绕原则

    非零环绕原则: 如果需要判断某一个区域是否需要填充颜色. 就从该区域中随机的选取一个点. 从这个点拉一条直线出来, 一定要拉到图形的外面. 此时以该点为圆心.看穿过拉出的直线的线段. 如果是顺时针方向 ...

  2. Java—进程与线程

    进程与线程 进程是程序(任务)的执行过程,具有动态性:持有资源(共享内存.共享文件)和线程,是资源和线程的载体. 线程是系统中最小的执行单元,同一进程中有多个线程,线程共享进程的资源. 线程的交互,交 ...

  3. 如何有效防止API的重放攻击(转自阿里云)

    API重放攻击(Replay Attacks)又称重播攻击.回放攻击,这种攻击会不断恶意或欺诈性地重复一个有效的API请求.攻击者利用网络监听或者其他方式盗取API请求,进行一定的处理后,再把它重新发 ...

  4. SQLSERVER procedure 传入参数为DataTable类型 C#该怎么写

    以上为数据库中存储过程传入参数为table类型 table类型在数据库中存在为: 最后在C#实现方式为:

  5. 事件循环进阶:macrotask与microtask

    这段参考了参考来源中的第2篇文章(英文版的),(加了下自己的理解重新描述了下), 这里没法给大家演示代码,我就简单说下我的理解吧. promise和settimeout 在一起的时候执行顺序是个有意思 ...

  6. 使用MapKit框架(持续更新)

    使用MapKit框架 地图显示 最简单显示地图的代码: // // RootViewController.m // CoreLocation // // Copyright (c) 2014年 Y.X ...

  7. 工作好搭档(三):慧想 S100 液晶显示器支架

            引言:工欲善其事,必先利其器.码农十年,与电脑打了二十多年的交道,也配置了一些过得去的装备.资金有限,更希望所有的投入都在刀刃上.写工作好搭档系列,是晒考虑的原因.思路.经验和教训.欢 ...

  8. ArcSde服务启动后又停止

    问题:突然发现ArcSde服务无法启动,“ArcSde服务启动后又停止,......” 环境:Win7+ArcSDE10 +Oracle11g 由于本人使用ArcSde时间不长,基本没有遇到过什么问题 ...

  9. codeforces Flipping Game 题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  10. 蓝牙BLE数据包格式汇总

    以蓝牙4.0为例说明: BLE包格式有:广播包.扫描包.初始化连接包.链路层控制包(LL层数据包).逻辑链路控制和自适应协议数据包(即L2CAP数据包)等: 其中广播包又分为:定向广播包和非定向广播包 ...