在开发项目当中,后台无限极菜单的展示是无可避免的,而且也很常见。一般后台菜单也就是分为两级,最多三级,但是也有可能有多级。今天就做一个无限极菜单的实现过程的记录。
这里做的是:基于角色的访问控制(Role-Based Access Control),在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。
先介绍下表结构:
CREATE TABLE `sp_auth` (
  `auth_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `auth_name` varchar(30) NOT NULL COMMENT '权限名称',
  `action_name` varchar(30) NOT NULL COMMENT '权限代码',
  `desc` varchar(120) NOT NULL DEFAULT '' COMMENT '权限描述',
  `pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级权限ID',
  `sort_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '权限排序值',
  `add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_delete` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否删除(0 未删除 | 1 已删除)',
  PRIMARY KEY (`auth_id`),
  UNIQUE KEY `action_name` (`action_name`),
  KEY `pid` (`pid`),
  KEY `add_time` (`add_time`),
  KEY `is_delete` (`is_delete`),
  KEY `controller_name` (`controller_name`(6)),
  KEY `auth_name` (`auth_name`(16)),
  KEY `sort_id` (`sort_id`)
) ENGINE=MyISAM AUTO_INCREMENT=113 DEFAULT CHARSET=utf8 COMMENT='权限表';
处理的方法:
//打印无限极树形结构菜单展示<br />    function _reSorts($data, $pid=0)<br />    {<br />        $ret = array();<br />        foreach ($data as $k => $v) {<br />            if($v['pid'] == $pid) {<br />                $v['children'] = _reSorts($data, $v['auth_id']);<br />                $ret[] = $v;<br />            }<br />        }<br />        return $ret;<br />    }<br />//打印二级菜单的方法function getMenuShow($data)<br />{<br />    $ret = array();<br />    if (!is_array($data)) {<br />        return false;<br />    }<br />    foreach ($data as $key => $val) {<br />        if ($val['pid'] == 0) {<br />            //再次遍历,将第二级别的放在作为其子菜单<br />            foreach ($data as $k => $v) {<br />                if ($v['pid'] == $val['auth_id']) {<br />                    $val['children'][] = $v;<br />                }<br />            }<br />            $ret[] = $val;<br />        }<br />    }<br />    return $ret;<br />}这样就能够获取展示的菜单数据。
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号