返回菜单的编辑、删......登陆

菜单的编辑、删除功能

笑颜常开2019-06-10 00:12:46191

1.控制器类代码

<?php
namespace app\admins\controller;
use think\Controller;
use Util\SysDb;

class Menu extends Base{
  public function index(){
     $pid = (int)input('get.pid');
     $where['pid'] = $pid;
     // 加载菜单列表
     $data['lists'] = $this->db->table('admin_menus')->where($where)->order('ord asc')->lists();
     $data['pid'] = $pid;
     // 子菜单
     if($pid>0){
        $parent = $this->db->table('admin_menus')->where(array('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_menus')->where(array('mid'=>$pid))->item();
     $data['menu'] = $this->db->table('admin_menus')->where(array('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'));
     $data['ord'] = (int)input('post.ord');
     $data['ishidden'] = (int)input('post.ishidden');
     $data['status'] = (int)input('post.status');
     if($data['title'] == ''){
        exit(json_encode(array('code'=>1,'msg'=>'菜单名称不能为空')));
     }
     if($data['pid']>0 && $data['controller'] == ''){
        exit(json_encode(array('code'=>1,'msg'=>'控制器名称不能为空')));
     }
     if($data['pid']>0 && $data['method'] == ''){
        exit(json_encode(array('code'=>1,'msg'=>'方法名称不能为空')));
     }
     if($mid){
        $res = $this->db->table('admin_menus')->where(array('mid'=>$mid))->update($data);
     }else{
        $res = $this->db->table('admin_menus')->insert($data);
     }
     if(!$res){
        exit(json_encode(array('code'=>1,'msg'=>'保存失败')));
     }else{
           exit(json_encode(array('code'=>0,'msg'=>'保存成功')));
       }
  }
  // 删除菜单
  public function delete(){
     $mid = (int)input('post.mid');
     $res = $this->db->table('admin_menus')->where(array('mid'=>$mid))->delete();
     if(!$res){
        exit(json_encode(array('code'=>1,'msg'=>'删除失败')));
     }
     exit(json_encode(array('code'=>0,'msg'=>'删除成功')));
  }
}

2.视图类代码

(1)菜单主页面index.html

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
  <script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
  <style type="text/css">
     .header span{background: #009688;margin-left: 30px;padding: 10px;color: #ffffff;}
     .header button{float: right;margin-top: -5px;}
     .header div{border-bottom: solid 2px #009688;margin-top: 8px;}
  </style>
</head>
<body style="padding: 10px;">
  <input type="hidden" id="pid" value="{$pid}">
  <div class="header">
     <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-primary layui-btn-sm" style="float: right;margin-top: 5px;margin-bottom: 5px;" onclick="backs({$backid})">返回上级菜单</button>
  <?php }?>
  <table class="layui-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==1?'禁用':'正常'}</td>
           <td>
              <button class="layui-btn layui-btn-xs" onclick="childs({$vo.mid})">子菜单</button>
              <button class="layui-btn layui-btn-warm layui-btn-xs" onclick="add({$vo.mid})">编辑</button>
              <button class="layui-btn layui-btn-danger layui-btn-xs" onclick="del({$vo.mid})">删除</button>
           </td>
        </tr>
        {/volist}
     </tbody>
  </table>
</body>
</html>
<script type="text/javascript">
  layui.use(['layer'],function(){
     layer = layui.layer;
     $ = layui.jquery;
  });

  // 添加
  function add(mid){
     var pid = $('#pid').val();
     layer.open({
        type:2,
        title:mid>0?'编辑菜单':'添加菜单',
        shade:0.3,
        area:['480px','420px'],
        content:'/index.php/admins/menu/add?mid='+mid+'&pid='+pid
     });
  }

  // 删除
  function del(mid){
     layer.confirm('确定要删除吗?',{
        icon:3,
        btn:['确定','取消']
     },function(){
        $.post('/index.php/admins/menu/delete',{'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>

(2).菜单添加页面add.html

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
  <script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
</head>
<body style="padding: 10px;">
  <form class="layui-form">
     <input type="hidden" name="pid" value="{$parent_menu.mid}">
     <input type="hidden" name="mid" value="{$menu.mid}">
     <?php if($parent_menu){?>
     <div class="layui-form-item">
        <label class="layui-form-label"><span style="color: green;">上级菜单</span></label>
        <div class="layui-input-inline">
           <input type="text" class="layui-input" disabled="true" style="color: green;" value="{$parent_menu.title}">
        </div>
     </div>
     <?php }?>

     <div class="layui-form-item">
        <label class="layui-form-label">菜单名称</label>
        <div class="layui-input-inline">
           <input type="text" class="layui-input" name="title" value="{$menu.title}">
        </div>
     </div>

     <div class="layui-form-item">
        <label class="layui-form-label">排序</label>
        <div class="layui-input-inline">
           <input type="text" class="layui-input" name="ord" value="{$menu.ord}">
        </div>
     </div>

     <div class="layui-form-item">
        <label class="layui-form-label">控制器</label>
        <div class="layui-input-inline">
           <input type="text" class="layui-input" name="controller" value="{$menu.controller}">
        </div>
     </div>

     <div class="layui-form-item">
        <label class="layui-form-label">方法</label>
        <div class="layui-input-inline">
           <input type="text" class="layui-input" name="method" value="{$menu.method}">
        </div>
     </div>

     <div class="layui-form-item">
        <label class="layui-form-label">状态</label>
        <div class="layui-input-inline">
           <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 class="layui-form-item">
     <div class="layui-input-block">
        <button class="layui-btn" onclick="save()">保存</button>
     </div>
  </div>
</body>
</html>
<script type="text/javascript">
  layui.use(['layer','form'],function(){
     var form = layui.form;
     layer = layui.layer;
     $ = layui.jquery;
  });

  function save(){
     var pid = parseInt($('input[name="pid"]').val());
     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(pid>0 && controller==''){
        layer.alert('请输入控制器',{'icon':2});
        return;
     }
     if(pid>0 && method==''){
        layer.alert('请输入方法名称',{'icon':2});
        return;
     }
     $.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>

3.运行结果

QQ图片20190610001144.png

最新手记推荐

• 用composer安装thinkphp框架的步骤• 省市区接口说明• 用thinkphp,后台新增栏目• 管理员添加编辑删除• 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消回复发送
  • PHP中文网