## 1.form表单 ``` {include file="common/header"} <body> <div class="layui-fluid"> <div class="layui-row"> <form class="layui-form"> <!-- <input type="hidden" name="__token__" value="{$Request.token}" /> --> <div class="layui-form-item"> <label for="username" class="layui-form-label"> <span class="x-red">*</span>管理员名称 </label> <div class="layui-input-inline"> <input type="text" id="username" name="username" required="required" lay-verify="username" autocomplete="off" class="layui-input" onblur="ajaxName()"> </div> <div class="layui-form-mid layui-word-aux"> <span class="x-red">*</span>将会成为您唯一的登入名 </div> </div> <div class="layui-form-item"> <label for="L_pass" class="layui-form-label"> <span class="x-red">*</span>密码 </label> <div class="layui-input-inline"> <input type="password" id="L_pass" name="password" required="required" lay-verify="pass" autocomplete="off" class="layui-input"> </div> <div class="layui-form-mid layui-word-aux"> 6到16个字符 </div> </div> <div class="layui-form-item"> <label for="L_repass" class="layui-form-label"> <span class="x-red">*</span>确认密码 </label> <div class="layui-input-inline"> <input type="password" id="L_repass" name="password" required="required" lay-verify="repass" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label for="L_email" class="layui-form-label"> <span class="x-red">*</span>邮箱 </label> <div class="layui-input-inline"> <input type="text" id="L_email" name="email" required="required" lay-verify="email" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">所属用户组</label> <div class="layui-input-inline"> <select name="role_id"> {volist name="role_data" id="role"} <option value="{$role.id}">{$role.remark}</option> {/volist} </select> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">是否启用</label> <div class="layui-input-block"> <input type="radio" name="status" value="1" title="是" checked=""><div class="layui-unselect layui-form-radio layui-form-radioed"><i class="layui-anim layui-icon layui-anim-scaleSpring"></i><div>是</div></div> <input type="radio" name="status" value="0" title="否"><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>否</div></div> </div> </div> <div class="layui-form-item"> <label for="L_repass" class="layui-form-label"></label> <button class="layui-btn" lay-filter="add" lay-submit="">增加</button> </div> </form> </div> </div> <script> //ajax查询是否重名 function ajaxName(){ var username = $('#username').val(); $.ajax({ type:"post", dataType:"json", data:{username:username}, url:"{:url('admin/ajaxName')}", success:function(data){ if (data.status == 1) { layer.alert(data.info, { title: '提示框', icon: 0, }); return false; } } },'json'); } layui.use(['form', 'layer'], function() { $ = layui.jquery; var form = layui.form, layer = layui.layer; //自定义验证规则 form.verify({ username: function(value, item){ //value:表单的值、item:表单的DOM对象 if (value.length < 3) { return '管理员名称至少得3个字符'; } if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){ return '管理员名称不能有特殊字符'; } if(/(^\_)|(\__)|(\_+$)/.test(value)){ return '管理员名称首尾不能出现下划线\'_\''; } if(/^\d+\d+\d$/.test(value)){ return '管理员名称不能全为数字'; } }, pass: function(value, item){ if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){ return '密码不能有特殊字符'; } if(/(^\_)|(\__)|(\_+$)/.test(value)){ return '密码首尾不能出现下划线\'_\''; } if(/^\d+\d+\d$/.test(value)){ return '密码不能全为数字'; } if (value.length < 6) { return '密码至少得3个字符'; } if (value.length > 16) { return '密码最多16个字符'; } }, repass: function(value) { if ($('#L_pass').val() != $('#L_repass').val()) { return '两次密码不一致'; } }, }); //监听提交 form.on('submit(add)', function(data) { //获取表单数据 var dataadd = data.field; $.ajax({ type:"post", dataType:"json", data:{data:dataadd}, url:"{:url('admin/save')}", success:function(data){ if (data.status == 1) { layer.alert(data.info, { title: '提示框', icon: 0, }); } else { layer.alert(data.info, { title: '提示框', icon: 0, }); } } },'json'); return false; }); }); </script> </body> </html> ``` ## 2.控制器 ``` /** * 保存新建管理员 * * @param \think\Request $request * @return \think\Response */ public function save($data) { if (!Request()->isAjax()) { return json(array('status' => 0, 'info' => '提交类型错误')); } else { //验证 $admin_username = db('admin')->field('username')->select(); if ($data['username'] == $admin_username['username']) { return json(array('status' => 0, 'info' => '管理员名称不得重复!')); } if ( empty($data['username'])) { return json(array('status' => 0, 'info' => '管理员名称不得为空!')); } if ( empty($data['password'])) { return json(array('status' => 0, 'info' => '密码不得为空!')); } //获取数据,除去所属角色id $userData['username'] = $data['username']; $userData['password'] = md5(md5($data['password']) . $data['salt']); $userData['salt'] = getRandKey();//随机一组数字 $userData['status'] = $data['status']; $userData['login_time'] = time(); $userData['login_ip'] = get_client_ip(); $userData['add_time'] = time(); $userData['email'] = $data['email']; $res = db('admin')->insert($userData, 0, 1); //添加管理员和角色中间表 $role_user['role_id'] =$data['role_id']; $role_user['user_id'] = $res; $roleadd = Db('role_user')->insert($role_user); if($res && $roleadd){ //记录操作日志 save_log('管理员名称:' . $userData['username'] . '添加成功', 2); return json(array('status' => 1, 'info' => '添加管理员成功')); }else{ return json(array('status' => 0, 'info' => '添加管理员失败')); } } } ```