摘要:Menu.php菜单控制器代码:<?php namespace app\admins\controller; use app\admins\controller\Base; use Util\SysDb; class Menu extends Base { public function index()
Menu.php菜单控制器代码:
<?php namespace app\admins\controller; use app\admins\controller\Base; use Util\SysDb; class Menu extends Base { public function index() { $pid = (int)input('get.pid'); $where['pid'] = $pid; //加载菜单列表 $data['lists'] = $this->db->table('admin_menu')->where($where)->order('ord asc')->lists(); $data['pid'] = $pid; //子菜单 if($pid>0){ $parent = $this->db->table('admin_menu')->where(['mid'=>$pid])->item(); $data['backid'] = $parent['pid']; } return $this->fetch('',$data); } public function add() { $pid = (int)input('get.pid'); $mid = (int)input('get.mid'); $data['parent_menu'] = $this->db->table('admin_menu')->where(['mid'=>$pid])->item(); $data['menu'] = $this->db->table('admin_menu')->where(['mid'=>$mid])->item(); return $this->fetch('',$data); } public function edit() { $pid = (int)input('get.pid'); $mid = (int)input('get.mid'); $data['parent_menu'] = $this->db->table('admin_menu')->where(['mid'=>$pid])->item(); $data['menu'] = $this->db->table('admin_menu')->where(['mid'=>$mid])->item(); return $this->fetch('',$data); } public function save() { $mid = (int)input('post.mid'); $data['pid'] = (int)input('post.pid'); $data['title'] = trim(input('post.title')); $data['controller'] = trim(input('post.controller')); $data['method'] = trim(input('post.method')); $daat['ord'] = (int)input('post.ord'); $data['ishidden'] = (int)input('post.ishidden'); $data['status'] = (int)input('post.status'); if($data['title']==''){ exit(json_encode(['code'=>1,'msg'=>'菜单名称不能为空'])); } if($data['controller']==''){ exit(json_encode(['code'=>1,'msg'=>'控制器不能为空'])); } if($data['method']==''){ exit(json_encode(['code'=>1,'msg'=>'控制器不能为空'])); } $res = $this->db->table('admin_menu')->insert($data); if(!$res){ exit(json_encode(['code'=>1,'msg'=>'保存失败'])); } exit(json_encode(['code'=>0,'msg'=>'保存成功'])); } public function doedit() { $data['mid'] = (int)input('post.mid'); $data['pid'] = (int)input('post.pid') ? (int)input('post.pid') : 0; $data['title'] = trim(input('post.title')); $data['controller'] = trim(input('post.controller')); $data['method'] = trim(input('post.method')); $data['ord'] = (int)input('post.ord'); $data['ishidden'] = (int)input('post.ishidden'); $data['status'] = (int)input('post.status'); if($data['title']==''){ exit(json_encode(['code'=>1,'msg'=>'菜单名称不能为空'])); } if($data['controller']==''){ exit(json_encode(['code'=>1,'msg'=>'控制器不能为空'])); } if($data['method']==''){ exit(json_encode(['code'=>1,'msg'=>'控制器不能为空'])); } $res = $this->db->table('admin_menu')->where(['mid'=>$data['mid']])->update($data); if(!$res){ exit(json_encode(['code'=>1,'msg'=>'保存失败'])); } exit(json_encode(['code'=>0,'msg'=>'保存成功'])); } public function del() { $mid = (int)input('post.mid'); $res = $this->db->table('admin_menu')->where(['mid'=>$mid])->delete(); if(!$res){ exit(json_encode(['code'=>1,'msg'=>'删除失败'])); } exit(json_encode(['code'=>0,'msg'=>'删除成功'])); } }
菜单列表index.html模板代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="/static/plugins/layui/css/layui.css"> <script src="/static/plugins/layui/layui.js"></script> <style> .header span{ background: #009688; margin-left: 30px; padding: 10px; color: #ffffff; } .header button{ float: right; margin-top: -5px; } .header div{ border-bottom: 2px solid #009688; margin-top: 8px; } </style> </head> <body style="padding: 10px;"> <input type="hidden" id="pid" value="{$pid}"> <div> <span>菜单列表</span> <button class="layui-btn layui-btn-sm" onclick="add()">添加</button> <div></div> </div> <?php if($pid>0){?> <button class="layui-btn layui-btn-sm layui-btn-primary" style="float: right;margin-top: 5px;margin-bottom: 5px;" onclick="backs({$backid})">返回上级菜单</button> <?php }?> <table> <thead> <tr> <th>ID</th> <th>排序</th> <th>菜单名称</th> <th>控制器</th> <th>方法</th> <th>是否隐藏</th> <th>状态</th> <th>操作</th> </tr> </thead> <tbody> {volist name='$lists' id="vo"} <tr> <td>{$vo.mid}</td> <td>{$vo.ord}</td> <td>{$vo.title}</td> <td>{$vo.controller}</td> <td>{$vo.method}</td> <td>{$vo.ishidden==1?'隐藏':'显示'}</td> <td>{$vo.status==0?'正常':'<span style="color: red;">禁用</span>'}</td> <td> <button class="layui-btn layui-btn-xs" onclick="childs({$vo.mid})">子菜单</button> <button class="layui-btn layui-btn-xs layui-btn-warm" onclick="edit({$vo.mid})">编辑</button> <button class="layui-btn layui-btn-danger layui-btn-xs" onclick="del({$vo.mid})">删除</button> </td> </tr> {/volist} </tbody> </table> </body> <script> layui.use('layer',function(){ var layer = layui.layer; $ = layui.jquery; }); //添加 function add(){ var pid = $('#pid').val(); layer.open({ type:2, title:'添加菜单', shade:0.3, area:['480px','420px'], content:'/index.php/admins/menu/add?pid='+pid }); } //编辑 function edit(mid){ var pid = $('#pid').val(); layer.open({ type:2, title:'编辑菜单', shade:0.3, area:['480px','420px'], content:'/index.php/admins/menu/edit?pid='+pid+'&mid='+mid }); } //删除 function del(mid) { layer.confirm('确认要删除吗?',{ icon:3, btn:['确定','取消'] },function(){ $.post('/index.php/admins/menu/del',{'mid':mid},function(res){ if(res.code>0){ layer.alert(res.msg,{'icon':2}); }else{ layer.msg(res.msg,{'icon':1}); setTimeout(function(){ window.location.reload(); },1000) } },'json'); }); } //子菜单 function childs(mid){ window.location.href = '?pid='+mid; } //返回上级菜单 function backs(pid){ window.location.href = '?pid='+pid; } </script> </html>
添加菜单add.html模板代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="/static/plugins/layui/css/layui.css"> <script src="/static/plugins/layui/layui.js"></script> </head> <body style="padding: 10px;"> <form> <input type="hidden" name="pid" value="{$parent_menu.mid}"> <input type="hidden" name="mid" value="{$menu.mid}"> <?php if($parent_menu){?> <div> <label style="color: green;">上级菜单</label> <div> <input type="text" disabled="true" style="color: green;" value="{$parent_menu.title}"> </div> </div> <?php }?> <div> <label>菜单名称</label> <div> <input type="text" name="title"> </div> </div> <div> <label>排序</label> <div> <input type="text" name="ord"> </div> </div> <div> <label>控制器</label> <div> <input type="text" name="controller"> </div> </div> <div> <label>方法</label> <div> <input type="text" name="method"> </div> </div> <div> <label>状态</label> <div> <input type="checkbox" name="ishidden" lay-skin="primary" title="是否隐藏" value="1"> <input type="checkbox" name="status" lay-skin="primary" title="是否禁用" value="1"> </div> </div> </form> <div> <div> <button onclick="save()">保存</button> </div> </div> </body> </html> <script> layui.use(['layer','form'],function(){ layer = layui.layer; form = layui.form; $ = layui.jquery; }); function save(){ var title = $.trim($('input[name="title"]').val()); var controller = $.trim($('input[name="controller"]').val()); var method = $.trim($('input[name="method"]').val()); if(title==''){ layer.alert('请输入菜单名称',{'icon':2}); return; } if(controller==''){ layer.alert('请输入控制器',{'icon':2}); return; } if(method==''){ layer.alert('请输入方法',{'icon':2}); } $.post('/index.php/admins/menu/save',$('form').serialize(),function(res){ if(res.code>0){ layer.alert(res.msg,{'icon':2}); }else{ layer.msg(res.msg,{'icon':1}); setTimeout(function(){ parent.window.location.reload(); },1000) } },'json'); } </script>
编辑菜单edit.html模板代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="/static/plugins/layui/css/layui.css"> <script src="/static/plugins/layui/layui.js"></script> </head> <body style="padding: 10px;"> <form> <input type="hidden" name="pid" value="{$parent_menu.mid}"> <input type="hidden" name="mid" value="{$menu.mid}"> <?php if($parent_menu){?> <div> <label style="color: green;">上级菜单</label> <div> <input type="text" disabled="true" style="color: green;" value="{$parent_menu.title}"> </div> </div> <?php }?> <div> <label>菜单名称</label> <div> <input type="text" name="title" value="{$menu.title}"> </div> </div> <div> <label>排序</label> <div> <input type="text" name="ord" value="{$menu.ord}"> </div> </div> <div> <label>控制器</label> <div> <input type="text" name="controller" value="{$menu.controller}"> </div> </div> <div> <label>方法</label> <div> <input type="text" name="method" value="{$menu.method}"> </div> </div> <div> <label>状态</label> <div> <input type="checkbox" name="ishidden" lay-skin="primary" title="是否隐藏" value="1" {$menu.ishidden==1?'checked':''}> <input type="checkbox" name="status" lay-skin="primary" title="是否禁用" value="1" {$menu.status==1?'checked':''}> </div> </div> </form> <div> <div> <button onclick="doedit()">保存</button> </div> </div> </body> </html> <script> layui.use(['layer','form'],function(){ layer = layui.layer; form = layui.form; $ = layui.jquery; }); function doedit(){ var title = $.trim($('input[name="title"]').val()); var controller = $.trim($('input[name="controller"]').val()); var method = $.trim($('input[name="method"]').val()); if(title==''){ layer.alert('请输入菜单名称',{'icon':2}); return; } if(controller==''){ layer.alert('请输入控制器',{'icon':2}); return; } if(method==''){ layer.alert('请输入方法',{'icon':2}); } $.post('/index.php/admins/menu/doedit',$('form').serialize(),function(res){ if(res.code>0){ layer.alert(res.msg,{'icon':2}); }else{ layer.msg(res.msg,{'icon':1}); setTimeout(function(){ parent.window.location.reload(); },1000) } },'json'); } </script>
批改老师:查无此人批改时间:2019-03-22 17:29:39
老师总结:完成的不错。下次代码复制不完,可以截图上传图片。继续加油。