PHP:【商城后台管理系统】部署管理员一级菜单和二级菜单列表添加功能

35 篇文章 1 订阅
31 篇文章 1 订阅

PHP:【商城后台管理系统】部署管理员一级菜单和二级菜单列表添加功能
一.1级菜单和2级菜单列表添加页面

  • 一级菜单

  • 二级菜单

二.部署流程

  1. 数据库后台菜单列表,字段设置,pid 是 菜单列表级别,0代表1级菜单,>0的是二级菜单,并且二级菜单pid字段值需要对应mid字段值,这样才可以相互绑定。每个菜单对应的还有Controller控制器,action方法,都要一一记录,这样才能映射到thinkphp控制器层还有视图层,用来区分每一级菜单的前端视图

  2. 框架采用ThinkPHP6.0

    HTML 1级菜单 代码块

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>菜单列表管理</title>
    <link rel="stylesheet" href="/static/layui-v2.6.8/layui/css/layui.css" />
    <script src="/static/layui-v2.6.8/layui/layui.js"></script>
    
</head>
<body style="padding: 10px;min-width:737px">
    <div class="layui-item" >
        <span style="color: 777;font-size:20px;height:30px;line-height:30px">首页/</span>
        <span style="color: ccc">菜单列表</span>
        <button class="layui-btn layui-btn-sm" style="float:right;margin:5px" onclick="add()">添加</button>
    </div>
    <table class="layui-table" >
        <thead>
            <tr>
                <th>ID</th>
                <th>菜单名称</th>
                <th>controller</th>
                <th>action</th>
                <th>是否隐藏</th>
                <th>状态</th>
                <th>编辑</th>
            </tr>
        </thead>
        <tbody>
        {foreach $data as $menu}
        <tr>
            <td>{$menu['mid']}</td>
            <td>{$menu['title']}</td>
            <td>{$menu['controller']}</td>
            <td>{$menu['action']}</td>
            <td style="color:{$menu['ishidden']==0 ? 'green' : 'red'};">
                {$menu['ishidden']==0 ? '不隐藏' : '隐藏'}
            </td>
            <td style="color:{$menu['status']==0 ? 'green' : 'red'};">
                {$menu['status']==0 ? '开启' : '关闭'}
            </td>
            <td>
            <button class="layui-btn layui-btn-primary layui-btn-xs" onclick="lower({$menu['mid']})">下级菜单</button>
            <button class="layui-btn layui-btn-xs" onclick="edit({$menu['mid']})">编辑</button>
            <button class="layui-btn layui-btn-danger layui-btn-xs"onclick="dle({$menu['mid']})">删除</button>
            </td>
        </tr>
        {/foreach}
        </tbody>
    </table>
</body>
<script>
          let  $ = layui.jquery;

          //编辑菜单
          function edit(mid)
          {
            layer.open({
                type:2,
                title: '编辑菜单',
                shadeClose: true,
                shade: 0.8,
                area: ['450px', '450px'],
                content: '/admin/Menus/edit?mid='+mid
                }); 
          }

          //删除菜单
          function dle(mid)
          {
            layer.confirm('确定删除吗?', {
                btn: ['确定','取消'],
                },
                function(){
                  let date = {};
                  $.post('/admin/Menus/dle?mid='+mid,date,function(res){
                    if (res.id == 1) {
                        layer.alert(res.msg,{icon:1});
                        setTimeout(() => {
                            window.location.reload();
                        }, 1000);
                    }else{
                        layer.alert(res.msg,{icon:2});
                    }
                  },'json')
                });
          }

           //添加菜单
           function add()
            {
                 
                 layer.open({
                type:2,
                title: '添加菜单',
                shadeClose: true,
                shade: 0.8,
                area: ['450px', '450px'],
                content: '/admin/Menus/add'
                }); 
            }

            //下级菜单
            function lower(mid)
            {
                 
                 layer.open({
                type:2,
                title: '下级菜单',
                shadeClose: true,
                shade: 0.8,
                area: ['800px', '600px'],
                content: '/admin/Menus/lower?mid='+mid
                }); 
            }
</script>
</html>
HTML 2级菜单 代码块
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>二级菜单</title>
    <link rel="stylesheet" href="/static/layui-v2.6.8/layui/css/layui.css" />
    <script src="/static/layui-v2.6.8/layui/layui.js"></script>
    
</head>
<body style="padding: 10px;">
    <div class="layui-item" >
        <span style="color: 777;font-size:20px;height:30px;line-height:30px">首页/</span>
        <span style="color: ccc">二级菜单列表</span>
       
        <button class="layui-btn layui-btn-sm" style="float:right;margin:5px" onclick="add({$data[0]['pid']})">添加</button>
      
    </div>
    <table class="layui-table" >
        <thead>
            <tr>
                <th>ID</th>
                <th>菜单名称</th>
                <th>controller</th>
                <th>action</th>
                <th>是否隐藏</th>
                <th>状态</th>
                <th>编辑</th>
            </tr>
        </thead>
        <tbody>
        {foreach $data as $menu}
        <tr>
            <td>{$menu['mid']}</td>
            <td>{$menu['title']}</td>
            <td>{$menu['controller']}</td>
            <td>{$menu['action']}</td>
            <td style="color:{$menu['ishidden']==0 ? 'green' : 'red'};">
                {$menu['ishidden']==0 ? '不隐藏' : '隐藏'}
            </td>
            <td style="color:{$menu['status']==0 ? 'green' : 'red'};">
                {$menu['status']==0 ? '开启' : '关闭'}
            </td>
            <td>
            
            <button class="layui-btn layui-btn-xs" onclick="edit({$menu['mid']})">编辑</button>
            <button class="layui-btn layui-btn-danger layui-btn-xs"onclick="dle({$menu['mid']})">删除</button>
            </td>
        </tr>
        {/foreach}
        </tbody>
    </table>
</body>
<script>
          let  $ = layui.jquery;

          //编辑菜单
          function edit(mid)
          {
            layer.open({
                type:2,
                title: '编辑菜单',
                shadeClose: true,
                shade: 0.8,
                area: ['450px', '450px'],
                content: '/admin/Menus/edit?mid='+mid
                }); 
          }

          //删除菜单
          function dle(mid)
          {
            layer.confirm('确定删除吗?', {
                btn: ['确定','取消'],
                },
                function(){
                  let date = {};
                  $.post('/admin/Menus/dle?mid='+mid,date,function(res){
                    if (res.id == 1) {
                        layer.alert(res.msg,{icon:1});
                        setTimeout(() => {
                            window.location.reload();
                        }, 1000);
                    }else{
                        layer.alert(res.msg,{icon:2});
                    }
                  },'json')
                });
          }

           //添加菜单
           function add(pid)
            {
                 
                 layer.open({
                type:2,
                title: '添加菜单',
                shadeClose: true,
                shade: 0.8,
                area: ['450px', '450px'],
                content: '/admin/Menus/add?pid='+pid
                }); 
            }

</script>
</html>
PHP 代码块
<?php
namespace app\admin\controller;
use app\admin\controller\Base;
use think\facade\Request;
use think\facade\Db;
use think\facade\View;
use think\facade\Session;
/**
 * 菜单管理
 */
class Menus extends Base
{
    //菜单列表
    public function index()
    {   
        //一级菜单
        $data['menuList'] = Db::table('admin_menu')->where('pid',0)->select()->toArray();
        // print_r($data);
        // die;
        View::assign([
            'data' => $data['menuList']
        ]);
        return View('/menus/index');
    }
    //菜单添加
    public function add()
    {   
            //如果pid 为空 则是一级菜单,如果不为空则是二级菜单
            $pid = Request::param('pid');
       
            if (Request::isPost()) {

                //菜单信息
                $data['pid'] = Request::post('pid');
                $data['title'] = Request::post('title');
                $data['controller'] = Request::post('controller');
                $data['action'] = Request::post('action');
                $data['ishidden'] = Request::post('ishidden');
                $data['status'] = Request::post('status');
    
                //当前角色信息
                $admin = $this->admin;
                $MyGroup = $this->MyGroup;
                
                
                if (!empty($data)) {
                    $insert = Db::table('admin_menu')->insert($data);
                    //插入的最大值行数
                    $count = (int)Db::table('admin_menu')->max('mid');
                    //再次插入到角色权限中
                    array_push($MyGroup['rights'],$count);
        
                    $MyGroup['rights'] = json_encode($MyGroup['rights']);
    
                    //更新角色权限
                    $mygroup = Db::table('admin_group')->where('gid',$MyGroup['gid'])->update([
                        'rights' => $MyGroup['rights']
                    ]);
                    
            
                }else {
                    exit(json_encode(['id' => 0 ,'msg' => '输入的信息错误']));
                }
    
                
                
                if (!empty($insert)) {
                    echo json_encode(['id' => 1 ,'msg' => '添加成功']);
                }else {
                    echo json_encode(['id' => 0 ,'msg' => '添加失败']);
                }
    
            }else {
                //菜单信息
                $data['menu'] = Db::table('admin_menu')->where('pid',$pid)->find();
                View::assign([
                    'pid' => $pid,
                    'data' => $data['menu']
                ]);
                return View('/menus/add');
            }
        
        }
        
        
    
    //下级菜单
    public function lower()
    {   
        //下级菜单查询
        $mid = Request::param('mid');
        $data['MenuList'] = Db::table('admin_menu')->where('pid',$mid)->select()->toArray();
        
        View::assign([
            'data' => $data['MenuList']
        ]);
        return View('/menus/lower');
    }
    //菜单修改
    public function edit()
    {   
        //菜单信息
        if (Request::isPost()) {
            $data['mid'] = Request::post('mid');
            $data['title'] = Request::post('title');
            $data['controller'] = Request::post('controller');
            $data['action'] = Request::post('action');
            $data['ishidden'] = Request::post('ishidden');
            $data['status'] = Request::post('status');

            if (!empty($data)) {
               $update = Db::table('admin_menu')->where('mid',$data['mid'])->update($data);
            }else {
                exit(json_encode(['id' => 0 ,'msg' => '输入的信息错误']));
            }

            if (!empty($update)) {
                echo json_encode(['id' => 1 ,'msg' => '修改成功']);
            }else {
                echo json_encode(['id' => 0 ,'msg' => '修改失败']);
            }

        }else {
            //菜单id
            $mid = Request::get('mid');
            //菜单信息
            $data['menu'] = Db::table('admin_menu')->where('mid',$mid)->find();

            View::assign([
                'data' => $data['menu']
            ]);
            return View('/menus/edit');
        }
      

    }

    //菜单删除
    public function dle ()
    {
        $mid = (int)Request::param('mid');

        //当前角色信息
        $admin = $this->admin;
        $MyGroup = $this->MyGroup;

        //删除角色对应的菜单权限
        $GroupKey = (int)array_search($mid,$MyGroup['rights'],true);
        array_splice($MyGroup['rights'],$GroupKey,1);
        $MyGroup['rights'] = json_encode($MyGroup['rights']);
        

        if (!empty($mid)) {
           $delete = Db::table('admin_menu')->where('mid',$mid)->delete();
            //更新角色权限
            $mygroup = Db::table('admin_group')->where('gid',$MyGroup['gid'])->update([
                'rights' => $MyGroup['rights']
            ]);
        }

        if (!empty($delete)) {
            echo json_encode(['id' => 1 ,'msg' => '删除成功']);
        }else {
            echo json_encode(['id' => 0 ,'msg' => '删除失败']);
        }
    }
}
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NIUSHOP开源商城B2C单商户V4,功能强大,安全便捷,框架成熟稳定便于扩展,源码100%开源,支持二次开发定制,让企业用更低的成本、更少的人力,更快的速度构建自己的商城,开启网上商城销售业务。 商城特色: 强大的营销功能模块,丰富的行业模板和装修组件,快速搭建最适合自己的电商平台,轻松获客、裂变。开启电商运营之路。 1、ThinkPhp6+LayUi+ElementUi,学习维护成本低 2、前端由UNI-APP框架编写,支持多端,易于维护 3、钩子+插件,组件化开发,可复用,开发便捷 4、标准API接口,前后端离,二次开发更方便 5、代码全部开源,方便企业扩展自身业务需求 开源版使用须知 1、仅允许用于个人学习研究使用; 2、开源版不建议商用,如果商用必须保留版权信息,望自觉遵守; 3、禁止将本开源的代码和资源进行任何形式任何名义的出售,否则产生的一切任何后果责任由侵权者自负。 4、推荐3名会员关注公众号,将免费获得单商户V4基础版授权。 5、绑定码云评论并点赞支持可获得单商户V4基础版授权 6、本基础版本后台源码全部开源,小程序为uniapp编译版,如需小程序源码,请点击马上获取。 技术亮点: 1、框架采用全新thinkphp6+事件开发设计+layui+uniapp进行设计,代码完全重构,采用支持百万级! 2、前端以layui+uniapp模块化开发; 3、数据导出采用phpExcel,使数据更加直观,更方便于管理统计; 4、插件钩子机制,功能模块独立,更有助于二次开发; 5、后台采用ECharts,直观体现关系数据可视化的图,支持图与图之间的混搭。实现完善的数据统计和析; 6、EasyWeChat部署微信开发,微信接入更加快捷,简单; 7、内置强大灵活的权限管理体系,有利于专人专项运营; 8、内置组合数据统计,系统配置,管理碎片化数据统计; 9、客户端完善的交互效果和动画,提升用户端视觉体验; 10、可以完美对接公众号和小程序,并且数据同步,实现真正意义上的一端开发,多端使用; 11、内置客服系统,可以对接微信客服,客服在线实时聊天; 12、高频数据缓存,数据库读写离,很大程度减轻服务器压力,提升访问速度; 13、后台设置菜单中可以一键数据备份和恢复,完全傻瓜式操作就可以轻松升级备份; 14、在线一键升级,轻松跨越到最新版本; 15、标准Api接口、前后端离,二次开发更方便快捷; 16、支持数据库结构、数据、模板在线缓存清除,提升用户体验; 17、可视化DIY店铺装修,方便、快捷、直观,可以随心所欲装扮自己的店铺; 18、无缝事件机制行为扩展更方便,方便二次开发; 19、支持队列降低流量高峰,解除代码耦合性,高可用性; 20、在线一键安装部署,自动检测系统环境一键安装,省时省力快捷部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值