搭建 rbac 后台系列教程(四)—— 创建左侧导航栏菜单

搭建 rbac 后台系列教程(四)—— 创建左侧导航栏菜单
2016-07-25 鲁鲁槟 收藏

1、创建 menu 表

CREATE TABLE `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`),  
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `menu` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

2、在 left.php 的</ul>后面添加以下内容

<?php
      use mdm\admin\components\MenuHelper; 
    $callback = function($menu){
        $data = json_decode($menu['data'], true);
        $items = $menu['children'];
        $return = ['label' => $menu['name'],'url' => [$menu['route']]];
        //处理我们的配置
        if ($data) {
            isset($data['visible']) && $return['visible'] = $data['visible'];//visible
            isset($data['icon']) && $data['icon'] && $return['icon'] = $data['icon'];//icon
            //other attribute e.g. class...
            $return['options'] = $data;
        }
        //没配置图标的显示默认图标
        (!isset($return['icon']) || !$return['icon']) && $return['icon'] = 'fa fa-circle-o';
        $items && $return['items'] = $items;
        return $return;
    };
    //这里我们对一开始写的菜单menu进行了优化
    echo dmstr\widgets\Menu::widget( [
        'options' => ['class' => 'sidebar-menu'],
        'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id,null, $callback),
    ] ); 
?>

3、点击“菜单”,然后点击 创建按钮进行创建菜单

4、点击“路由”,将以下几个路由写到 auth_item 表(为了分配路由给菜单)

点击“权限”,再点击查看“权限控制”,分配 /admin/menu/*

5、点击“菜单”,创建以下子菜单

注意:填写 “Parent” 即父级菜单的名称时要手动选择才行,直接全打上 会保存不了的。比如:先输入“权限”,然后出现下拉菜单就可以选择“权限控制”了。

6、刷新页面,预览效果:你会发现,多了一个菜单(O(∩_∩)O哈哈~),请删除 left.php 中多余的 <ul></ul>

暂时还没有评论,快来抢沙发吧~
    发表评论
    您需要登录后才可以评论。 登录 | 立即注册
    阅读 1340 1
    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值