1. 云栖社区>
  2. PHP教程>
  3. 正文

Yii2 菜单menu管理

作者:用户 来源:互联网 时间:2017-12-01 11:14:33

管理菜单

Yii2 菜单menu管理 - 摘要: 本文讲的是Yii2 菜单menu管理, 前面写了一篇 Yii2-admin RBAC权限管理的实现 有朋友在评论里问了关于menu的使用,在这里我做一下统一的回答,稍微讲解一下我平时在项目中是怎么使用menu的。 menu表是根据权限来控制后台菜单的显示和隐藏的。 先来

前面写了一篇 Yii2-admin RBAC权限管理的实现 有朋友在评论里问了关于menu的使用,在这里我做一下统一的回答,稍微讲解一下我平时在项目中是怎么使用menu的。

menu表是根据权限来控制后台菜单的显示和隐藏的。

先来看看表结构:

-- ---------------------------- -- Table structure for yc_menu -- ---------------------------- DROP TABLE IF EXISTS `yc_menu`; CREATE TABLE `yc_menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) NOT NULL, `parent` int(11) DEFAULT NULL, `route` varchar(256) DEFAULT NULL, `order` int(11) DEFAULT NULL, `data` text, PRIMARY KEY (`id`), KEY `parent` (`parent`), KEY `name` (`name`), KEY `route` (`route`(255)), KEY `order` (`order`), CONSTRAINT `dh_menu_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `dh_menu` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='系统管理员菜单权限表';

这里详细介绍几个主要的字段:

name 是菜单的名称;

parent 是父类菜单的名称,留空则表示顶级菜单;

route 指的是菜单的URL;

在数据库里的表现:

Yii2 菜单menu管理

在页面上的表现:

Yii2 菜单menu管理

使用方式: <ul id="main-menu" class="main-menu"> <li class="<?php if (Yii::$app->controller->id == 'site'){echo 'active';}?>"> <a href="/site/index"> <i class="linecons-cloud"></i> <span class="title">HOME</span> </a> </li> <?php $i=0;foreach (MenuHelper::getAssignedMenu(/Yii::$app->user->id) as $k=>$p_menu) {if(!empty($p_menu['items'])){ $if_menu=0; $url=parse_url($_SERVER["REQUEST_URI"]); $url_arr = array_filter(explode("/", $url['path'])); $url_items=$item_arr=[]; //根据URL判断显示 foreach($p_menu['items'] as $val){ if($val['url'][0]){ $item_arr = array_filter(explode("/", $val['url'][0])); } $url_items[]=$item_arr[1]; } if(isset($url_arr[1]) && in_array($url_arr[1], $url_items)){ $if_menu=1; }?><li <?php echo $if_menu==1?'class="active"':''; ?>><a href="<?php echo $p_menu['url']; ?>"> <i class="<?php echo $linecons[$i];$i++; ?>"></i> <span class="title"><?=$p_menu['label']?></span></a><?php if(!empty($p_menu['items'])){ ?><ul <?php echo $if_menu==1?'style="display: block;"':''; ?>><?php foreach ($p_menu['items'] as $c_menu) {?><li> <a href="<?= $c_menu['url'][0] ?>"> <span class="title"><?= $c_menu['label'] ?></span> </a> </li> <?php } ?></ul> <?php } ?> </li> <?php }else{ ?> <li> <a href="<?= $p_menu['url'][0] ?>"><i class="icon-bar-chart"></i><?=$p_menu['label']?></a> </li> <?php }} ?></ul>

这里使用到啦yii2-admin下的MenuHelper类getAssignedMenu方法,该方法用于获取用户对应的菜单信息.

在config/params.php下配置 return ['adminEmail' => '[email protected]','mdm.admin.configs' => ['db' => 'db','menuTable' => '{{%yc_menu}}','cache' => null,'cacheDuration' => 3600],]; 最终显示结果:

Yii2 菜单menu管理

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索管理 菜单 ,以便于您获取更多的相关知识。