Heim > php教程 > php手册 > Anzeige des Infinitus-Menüs

Anzeige des Infinitus-Menüs

WBOY
Freigeben: 2016-10-12 09:50:12
Original
1801 Leute haben es durchsucht

In Entwicklungsprojekten ist die Anzeige des Backend-Infinitus-Menüs unvermeidlich und sehr häufig. Im Allgemeinen ist das Hintergrundmenü in zwei Ebenen unterteilt, bis zu drei Ebenen, es können jedoch auch mehrere Ebenen vorhanden sein. Heute werde ich den Implementierungsprozess des Infinitus-Menüs protokollieren.

Was hier geschieht, ist: Rollenbasierte Zugriffskontrolle. In RBAC werden Berechtigungen mit Rollen verknüpft, und Benutzer erhalten die Berechtigungen dieser Rollen, indem sie Mitglieder der entsprechenden Rollen werden. Dies vereinfacht die Verwaltung von Berechtigungen erheblich. In einer Organisation werden Rollen erstellt, um verschiedene Aufgaben zu erledigen, und Benutzern werden basierend auf ihren Verantwortlichkeiten und Qualifikationen entsprechende Rollen zugewiesen. Benutzer können problemlos von einer Rolle zur anderen zugewiesen werden. Rollen können basierend auf neuen Anforderungen und der Systemintegration neue Berechtigungen gewährt werden, und Berechtigungen können bei Bedarf auch von einer Rolle zurückgefordert werden. Beziehungen zwischen Charakteren können so aufgebaut werden, dass sie ein breiteres Spektrum objektiver Umstände abdecken.

Führen Sie zunächst die folgende Tabellenstruktur ein:

CREATE TABLE `sp_auth` (
`auth_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`auth_name` varchar(30) NOT NULL COMMENT 'Authority name',
`action_name` varchar( 30) NOT NULL COMMENT 'Berechtigungscode',
`desc` varchar(120) NOT NULL DEFAULT '' COMMENT 'Berechtigungsbeschreibung',
`pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT ' Überlegene Berechtigungs-ID',
`sort_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Permission sort value',
`add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'Zeit hinzufügen ',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Update time',
`is_delete` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'Ob gelöscht werden soll (0 nicht gelöscht | 1 hat Löschen)',
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='Permission Table';

Verarbeitungsmethode:

//打印无限极树形结构菜单展示<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>//打印二级菜单的方法
Nach dem Login kopieren
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>}
Nach dem Login kopieren

Auf diese Weise erhalten Sie die angezeigten Menüdaten.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage