abstract: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>狀態(tài)</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>狀態(tài)</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>狀態(tài)</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>
Correcting teacher:查無此人Correction time:2019-03-22 17:29:39
Teacher's summary:完成的不錯。下次代碼復制不完,可以截圖上傳圖片。繼續(xù)加油。