首頁  >  文章  >  php教程  >  無限極菜單展示

無限極菜單展示

WBOY
WBOY原創
2016-10-12 09:50:121743瀏覽

在開發專案當中,後台無限極菜單的展示是無可避免的,而且也很常見。一般後台選單也就是分成兩級,最多三級,但也有可能有多級。今天就做一個無限極菜單的實現過程的記錄。

這裡做的是:基於角色的存取控制(Role-Based Access Control),在RBAC中,權限與角色相關聯,使用者透過成為適當角色的成員而得到這些角色的權限。這就大大簡化了權限的管理。在一個組織中,角色是為了完成各種工作而創造,使用者則依據它的責任和資格來被指派相應的角色,使用者可以輕易地從一個角色被指派到另一個角色。角色可依新的需求和系統的合併而賦予新的權限,而權限也可依需求而從某一角色回收。角色與角色的關係可以建立起來以囊括更廣泛的客觀情境。

先介紹下表結構:

CREATE TABLE `sp_auth` (
`auth_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`auth_name` varchar(30) NOT ',
`desc` varchar(120) NOT NULL DEFAULT '' COMMENT '權限描述',
`pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上級權限ID',
`sort_id` smallint( ) unsigned NOT NULL DEFAULT '0' COMMENT '權限排序值',
`add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '新增時間',
`update_time` timestamp NOT NEST更新時間',
`is_delete` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否刪除(0 未刪除| 1 已刪除)',
PRIMARY KEY (`auth_id`),EY `action_name`),
KEY `pid` (`pid`),
KEY `add_time` (`add_time`),
KEY `is_delete` (`is_delete`),
KEY `controller_name` (`controller_name`(`66) ),
KEY `auth_name` (`auth_name`(16)),
KEY `sort_id` (`sort_id`)
) ENGINE=MyISAM AUTO_INCREMENT=113 DEFAULT CHARSET=utf8 COMMENT='nutf8
處理的方法:

//打印无限极树形结构菜单展示<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>}
這樣就能夠取得展示的選單資料。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn