无限极菜单展示
这里做的是:基于角色的访问控制(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='权限表';
处理的方法:
//打印无限极树形结构菜单展示
function _reSorts($data, $pid=0)
{
$ret = array();
foreach ($data as $k => $v) {
if($v['pid'] == $pid) {
$v['children'] = _reSorts($data, $v['auth_id']);
$ret[] = $v;
}
}
return $ret;
}
//打印二级菜单的方法
function getMenuShow($data)
{
$ret = array();
if (!is_array($data)) {
return false;
}
foreach ($data as $key => $val) {
if ($val['pid'] == 0) {
//再次遍历,将第二级别的放在作为其子菜单
foreach ($data as $k => $v) {
if ($v['pid'] == $val['auth_id']) {
$val['children'][] = $v;
}
}
$ret[] = $val;
}
}
return $ret;
}
这样就能够获取展示的菜单数据。
上一篇: 如何嵌入和使用C#来访问资源的代码详解
下一篇: php中sql注入漏洞示例
推荐阅读
-
Vue 递归多级菜单的实例代码
-
Win10开始菜单打不开怎么办?Win10开始菜单打不开的解决方法
-
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
-
Android仿UC底部菜单栏实现原理与代码
-
Android编程实现二级下拉菜单及快速搜索的方法
-
微信小程序获取位置展示地图并标注信息的实例代码
-
创意导航菜单最新趋势分析 告诉你为啥别人的菜单才好看(含6个实用例子)
-
eclipse rcp详解Hello World以及eclipse rcp和osgi的简单展示(图文)
-
Android 中Popwindow弹出菜单的两种方法实例
-
jQuery实现的点击显示隐藏下拉菜单功能完整示例