YII2.0 后台手动添加用户功能
2018-07-22 06:00:42来源:博客园 阅读 ()
后台添加管理员用户使用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, ]); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Yii2.0 组件 2019-07-23
- Yii2.0 queue 2019-07-23
- dedecmsV5.7织梦后台更新文章,发布时间不自动更新 2019-04-25
- PHP基本语法 2019-04-12
- 手动配置PHP7.2+Apach2.4犯的小错误 [未解决] 2019-01-01
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash