由于后台会员 没有新增会员按钮 只有编辑按钮 下面来个开发案例
/**
* 单独添加会员
*/
public function add()
{
if ($this->request->isPost()) {
$params = $this->request->post("row/a");
validate('\\app\\admin\\validate\\user\\User')->scene('add')->check($params);
// 密码处理
if (!empty($params['password'])) {
$params['salt'] = get_random_str(10);
$params['password'] = app('user')->hashPassword($params['password'], $params['salt']);
} else {
unset($params['password']);
}
// 会员分组(
$accessGroup = [];
if (!empty($params['group_id'])) {
$accessGroup = explode(',', $params['group_id']);
foreach ($accessGroup as $key => $value) {
$addAccess[] = ['group_id' => $value, 'user_id' => 1]; // 和edit完全一致的临时赋值
}
}
// 生日处理
$params['birthday'] = empty($params['birthday']) ? null : $params['birthday'];
// 补充基础字段(
$params['create_time'] = time();
$params['update_time'] = time();
Db::startTrans();
try {
// 插入用户
$userModel = new \app\admin\model\user\User;
$bl = $userModel->save($params);
if ($bl === false) {
Db::rollback();
$this->error(lang('Operation failed'));
}
$userId = $userModel->id; // 获取新增用户ID
// 分组关联处理
if (!empty($accessGroup)) {
$addAccess = [];
foreach ($accessGroup as $key => $value) {
$addAccess[] = [
'group_id' => $value,
'user_id' => $userId,
'create_time' => time(),
'update_time' => time()
];
}
// 先删除再新增
UserGroupAccess::where(['user_id' => $userId])->delete();
(new UserGroupAccess)->insertAll($addAccess);
} else {
UserGroupAccess::where(['user_id' => $userId])->delete();
}
Db::commit();
} catch (\Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
$this->success();
}
// 获取会员分组列表
$groupList = UserGroup::where(['status'=>'normal'])->select()->toArray();
return $this->view->fetch('', compact('groupList'));
}
下面在会员中心的html加入 原本是 {:build_toolbar('refresh,adel')} 新增 {:build_toolbar('refresh,add,del')}然后在
新增为
下面是add文件的完整版 <form role="form" action="" class="frm-operate" method="post">
<input type="text" id="frm-group_id" class="form-control selectpage" name="row[group_id]"
data-select-only="true" data-pagination="false" data-multiple="true"
data-data="{:url('/user.user/getGroup')}">
<input type="text" class="form-control" id="frm-username" name="row[username]"
placeholder="用户名" data-rule="required;length(3~16)">
<input type="text" class="form-control" id="frm-nickname" name="row[nickname]"
placeholder="昵称" data-rule="required;length(2~16)">
<input type="password" class="form-control" id="frm-password" name="row[password]"
placeholder="密码" data-rule="required;length(6~16)">
<input type="text" class="form-control" id="frm-mobile" name="row[mobile]"
placeholder="手机号" data-rule="mobile">
<input type="text" class="form-control" id="frm-email" name="row[email]"
placeholder="邮箱" data-rule="email">
<input type="number" class="form-control" id="frm-money" name="row[money]" value="0" min="0">
<input type="number" class="form-control" id="frm-score" name="row[score]" value="0" min="0">
<select name="row[gender]" class="form-control">
</select>
<input type="text" class="form-control laydate" id="frm-birthday" name="row[birthday]">
<textarea class="form-control" id="frm-remark" name="row[remark]" rows="3" placeholder="备注"></textarea>
{:build_radios('row[status]',['normal'=>'启用','hidden'=>'禁用'], 'normal')}
</form>
{block:script}
[removed]
require(['admin','form'], function (undefined,Form) {
Form.api.init();
})
[removed]
{/block:script}上面即可实现新增会员功能 ,如果觉得麻烦 可以替换我下面的所有功能 如果你二开了 建议按上面方法来 替换user.php
<?php
// +----------------------------------------------------------------------
// | HkCms
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2021 http://www.hkcms.cn, All rights reserved.
// +----------------------------------------------------------------------
// | Author: 广州恒企教育科技有限公司
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\admin\controller\user;
use app\admin\controller\BaseController;
use app\admin\model\user\UserGroup;
use app\admin\model\user\UserGroupAccess;
use libs\Tree;
use think\facade\Db;
class User extends BaseController
{
/**
* 用户模型
* @var \app\admin\model\user\User
*/
protected $model;
/**
* 控制器中间件
* @var array
*/
protected $middleware = [
'login',
'auth'=>['except'=>'getGroup']
];
/**
* 是否开启Validate验证
* @var bool
*/
protected $enableValidate = true;
public function initialize()
{
parent::initialize();
$this->model = new \app\admin\model\user\User;
}
public function index()
{
if ($this->request->isAjax()) {
if ($this->request->param('searchTable')) {
return $this->selectPage(); // 判断请求。如果是动态下拉组件请求,则交接给selectPage方法
}
list($map, $limit, $offset, $order, $sort) = $this->buildparams();
$data = $this->model->where($map)->order($sort, $order)->limit($offset, $limit)->select()->toArray();
$total = $this->model->where($map)->order($sort, $order)->count();
foreach ($data as &$value) {
$value['group_names'] = \app\index\library\User::instance()->getGroupField($value['id']);
}
return json(['total' => $total, 'rows' => $data]);
}
return $this->view->fetch();
}
/**
* 单独添加会员
*/
public function add()
{
if ($this->request->isPost()) {
$params = $this->request->post("row/a");
validate('\\app\\admin\\validate\\user\\User')->scene('add')->check($params);
// 密码处理
if (!empty($params['password'])) {
$params['salt'] = get_random_str(10);
$params['password'] = app('user')->hashPassword($params['password'], $params['salt']);
} else {
unset($params['password']);
}
// 会员分组(
$accessGroup = [];
if (!empty($params['group_id'])) {
$accessGroup = explode(',', $params['group_id']);
foreach ($accessGroup as $key => $value) {
$addAccess[] = ['group_id' => $value, 'user_id' => 1]; // 和edit完全一致的临时赋值
}
}
// 生日处理
$params['birthday'] = empty($params['birthday']) ? null : $params['birthday'];
// 补充基础字段(
$params['create_time'] = time();
$params['update_time'] = time();
Db::startTrans();
try {
// 插入用户
$userModel = new \app\admin\model\user\User;
$bl = $userModel->save($params);
if ($bl === false) {
Db::rollback();
$this->error(lang('Operation failed'));
}
$userId = $userModel->id; // 获取新增用户ID
// 分组关联处理
if (!empty($accessGroup)) {
$addAccess = [];
foreach ($accessGroup as $key => $value) {
$addAccess[] = [
'group_id' => $value,
'user_id' => $userId,
'create_time' => time(),
'update_time' => time()
];
}
// 先删除再新增
UserGroupAccess::where(['user_id' => $userId])->delete();
(new UserGroupAccess)->insertAll($addAccess);
} else {
UserGroupAccess::where(['user_id' => $userId])->delete();
}
Db::commit();
} catch (\Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
$this->success();
}
// 获取会员分组列表
$groupList = UserGroup::where(['status'=>'normal'])->select()->toArray();
return $this->view->fetch('', compact('groupList'));
}
public function edit($id = null)
{
$row = $this->model->find($id);
if (!$row) {
$this->error(lang('Record does not exist'));
}
if ($this->request->isPost()) {
$params = $this->request->post("row/a");
validate('\\app\\admin\\validate\\user\\User')->scene('edit')->check($params);
// 密码处理
if (!empty($params['password'])) {
$params['salt'] = get_random_str(10);
$params['password'] = app('user')->hashPassword($params['password'], $params['salt']);
} else {
unset($params['password']);
}
// 会员分组
if (!empty($params['group_id'])) {
$accessGroup = explode(',', $params['group_id']);
foreach ($accessGroup as $key => $value) {
$addAccess[] = ['group_id' => $value, 'user_id' => 1];
}
}
$params['birthday'] = empty($params['birthday']) ? null : $params['birthday'];
Db::startTrans();
try {
$bl = $row->save($params);
if ($bl === false) {
Db::rollback();
$this->error(lang('Operation failed'));
}
if (!empty($accessGroup)) {
$addAccess = [];
$userId = $row->id;
foreach ($accessGroup as $key => $value) {
$addAccess[] = ['group_id' => $value, 'user_id' => $userId, 'create_time' => time(), 'update_time' => time()];
}
UserGroupAccess::where(['user_id' => $userId])->delete();
(new UserGroupAccess)->insertAll($addAccess);
} else {
UserGroupAccess::where(['user_id' => $row->id])->delete();
}
Db::commit();
} catch (\Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
$this->success();
}
$row = $row->getOrigin();
$row['group_id'] = implode(',', UserGroupAccess::where(['user_id' => $row['id']])->column('group_id'));
return $this->view->fetch('', compact('row'));
}
/**
* 获取会员分组
*/
public function getGroup()
{
// 第一次加载搜索
$searchValue = $this->request->param('searchValue');
$map = [];
if (!empty($searchValue)) {
$map[] = ['id','in',$searchValue];
}
// 获取拥有的角色组ID
$data = UserGroup::where(['status'=>'normal'])->where($map)->select()->toArray();
if (empty($data)) {
return json(['total'=>0,'rows'=>[]]);
}
$arr = Tree::instance()->getTreeList(Tree::instance()->init($data)->getTreeArray($data[0]['parent_id']),'name');
return json(['total'=>count($arr),'rows'=>$arr]);
}
}
替换index.html
<form action="" method="get" class="frm-filter">
<input type="text" class="form-control" name="nickname" placeholder="" data-op="like %...%">
<input type="text" class="form-control" name="username" placeholder="{:lang("Username")}" data-op="like %...%">
<input type="email" class="form-control" name="email" placeholder="" data-op="like %...%">
<input type="text" class="form-control" name="mobile" placeholder="" data-op="like %...%">
<input type="text"
class="form-control laydate"
id="frm-publish_time"
name="logintime"
data-type="datetime"
data-range="true"
data-op="BETWEEN TIME"
autocomplete="off"
placeholder="{:lang("Login time")}">
<input type="submit" class="btn btn-primary" value="{:lang('Search')}">
<input type="reset" class="btn btn-default ml-2" value="{:lang('Reset')}">
</form>
{block:script}
[removed]
require(['admin','table'], function (undefined,cmsTable) {
$(function () {
cmsTable.init({
url: "{:url('/user.User/index')}",
search: false,
escape: false,
sortName:'update_time',
customFilter: true,
columns: [{
field: 'state',
checkbox: true,
},{
field: 'id',
title: 'ID'
},{
field: 'group_names',
title: '{:lang("Member group")}'
},{
field: 'username',
title: '{:lang("Username")}',
},{
field: 'nickname',
title: '{:lang("Nickname")}',
},{
field: 'email',
title: '{:lang("Email")}',
},{
field: 'mobile',
title: '{:lang("Mobile")}',
},{
field: 'money',
title: '{:lang("Money")}',
},{
field: 'score',
title: '{:lang("Score")}',
},{
field: 'level',
title: '{:lang("Level")}',
visible: false
},{
field: 'exp',
title: '{:lang("Exp")}',
visible: false
},{
field: 'avatar',
title: '{:lang("Avatar")}',
formatter: cmsTable.formatter.image
},{
field: 'gender',
title: '{:lang("Gender")}',
formatter: function (value, row) {
if (value==1) {
return lang('男');
} else if (value==2) {
return lang('女');
} else {
return lang('保密');
}
}
},{
field: 'birthday',
title: '{:lang("Birthday")}',
visible: false
},{
field: 'introduction',
title: '{:lang("Introduction")}',
visible: false
},{
field: 'latest_time',
title: '{:lang("Latest time")}',
visible: false
},{
field: 'login_time',
title: '{:lang("Login time")}',
},{
field: 'login_ip',
title: '{:lang("Login ip")}',
visible: false
},{
field: 'status',
title: '{:lang("Status")}',
formatter: cmsTable.formatter.switchBtn,
events: cmsTable.events.switchBtn
},{
field: 'remark',
title: '{:lang("Remark")}',
},{
field: 'create_time',
title: '{:lang("Create time")}'
},{
field: 'update_time',
title: '{:lang("Update time")}',
visible: false
},{
field: 'operate',
title: '{:lang("Operate")}',
formatter: cmsTable.formatter.operate,
events: cmsTable.events.operate
}]});
})
})
[removed]
{/block:script}
新增add.html
<form role="form" action="" class="frm-operate" method="post">
<input type="text" id="frm-group_id" class="form-control selectpage" name="row[group_id]"
data-select-only="true" data-pagination="false" data-multiple="true"
data-data="{:url('/user.user/getGroup')}">
<input type="text" class="form-control" id="frm-username" name="row[username]"
placeholder="用户名" data-rule="required;length(3~16)">
<input type="text" class="form-control" id="frm-nickname" name="row[nickname]"
placeholder="昵称" data-rule="required;length(2~16)">
<input type="password" class="form-control" id="frm-password" name="row[password]"
placeholder="密码" data-rule="required;length(6~16)">
<input type="text" class="form-control" id="frm-mobile" name="row[mobile]"
placeholder="手机号" data-rule="mobile">
<input type="text" class="form-control" id="frm-email" name="row[email]"
placeholder="邮箱" data-rule="email">
<input type="number" class="form-control" id="frm-money" name="row[money]" value="0" min="0">
<input type="number" class="form-control" id="frm-score" name="row[score]" value="0" min="0">
<select name="row[gender]" class="form-control">
</select>
<input type="text" class="form-control laydate" id="frm-birthday" name="row[birthday]">
<textarea class="form-control" id="frm-remark" name="row[remark]" rows="3" placeholder="备注"></textarea>
{:build_radios('row[status]',['normal'=>'启用','hidden'=>'禁用'], 'normal')}
</form>
{block:script}
[removed]
require(['admin','form'], function (undefined,Form) {
Form.api.init();
})
[removed]
{/block:script}
有个问题 本人不喜欢多语音 所以新增add并没有加入多语音 有需要多语音你们自己改下add.html就行
发表评论 取消回复