************   模型层递归查询权限   ************

/**
     * 递归方式查询权限
     */
    public function getPrivilege()
    {
        $connection = \Yii::$app->db;
        $top=$command = $connection->createCommand('SELECT * FROM privilege')->queryAll();       
        return $this->digui($top, $parent_id=0);
    }
    
    public function digui($top, $parent_id)
    {   
        $child = array();
        foreach ($top as $key => $v)
        {
            if($v['parent_id'] == $parent_id)
            {
                $child[] = $v;
            }
        }
        if(empty($child))
        {
            return  null;
        }
        foreach($child as $key => $v)
        {
            $second = $this->digui($top, $v['p_id']);
            if($second)
            {
                $child[$key]['child'] = $second;
            }
        }
        return $child;
    }

      ************   控制器层组合数组   ************

public function actionLeft(){
        
        //查询所有权限
        $pri = new Privilege();
        $privilege = $pri->getPrivilege();
        $child = array();
        foreach ($privilege as $key => $val) {
            if($val['child']){
                foreach ($val['child'] as $k => $v) {
                    $child[$key][] = "<a href='index.php?r=".$v['controller'].'/'.$v['action']."' target='mainFrame' >".$v['privilege']."</a>";
                }
            } else {
                unset($privilege[$key]);
            }
        }
        //print_r($child);die;
        return $this->render('left',['privilege'=>$privilege,'child'=>$child]);
    }

************   视图层引用部件   ************

<?php

//折叠
use yii\bootstrap\Collapse;

?>

<style>
   #yii-debug-toolbar{display: none;}
</style>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>项目后台管理系统</title>
</head>
<body style="background:#4AA3D8">
<?php foreach($privilege as $k => $v){?>
    <?php
    echo  Collapse::widget([
    'items'=>[
        [
            'label'=>$v['privilege'],
            'content'=>$child[$k],
        ]        
    ],
    'options'=>['style'=>['margin-bottom'=>'5px', 'left'=>'0']]
]);?>
<?php }?>
</body>
</html>

yii2 利用小部件生成后台左边菜单栏的更多相关文章

  1. Yii2 DetailView小部件

    DetailView小部件 Yii 提供了一套数据库小部件 widgets,这些小部件可以用于显示数据 DetailView 小部件用于显示一条记录数据 ListView 和 GridView 可以用 ...

  2. Yii2 使用小部件 Breadcrumbs

    yii有两种Breadcrumbs写法,one: echo Breadcrumbs::widget([ 'itemTemplate' => "<li><i>{l ...

  3. YII2 小部件(widgets)

    小部件基本上在views中使用,在视图中可调用 yii\base\Widget::widget() 方法使用小部件. 该方法使用 配置 数组初始化小部件并返回小部件渲染后的结果. 例如如下代码插入一个 ...

  4. yii2小部件(widget)

    一.创建一个简单的小部件 namespace common\components; //common需要自己先设定一个别名 use yii\base\Widget; //小部件需要继承的基类 use ...

  5. Yii2的相关学习记录,alert等美化、confirm异步、session中的flash及小部件的使用(六)

    呃,系统自带的alert.confirm等弹出框实在是难看,作为一个颜控,这能忍? 这里我用的是kartik-v/yii2-dialog,这个是基于bootstrap3-dialog这个来做了一些常用 ...

  6. yii2 Gridview网格小部件

    Gridview 网格小部件 一.特点: 1.是yii中功能最强大的小部件之一: 2.非常适合快速建立系统的管理后台. 3.用 dataProvider 键来指定数据的提供者 4.用 filterMo ...

  7. Yii2之ListView小部件

    ListView是yii框架中类似GridView,也是用于展示多条数据的小部件,相比GridView,ListView可以更加灵活地设置数据展示的格式. 下面以我自己做的一个使用ListView来展 ...

  8. 教你在Yii2.0框架中如何创建自定义小部件

    本教程将帮助您创建自己的自定义小部件在 yii framework 2.0.部件是可重用的模块和用于视图. 创建一个小部件,需要继承 yii\base\Widget,覆盖重写 yii\base\Wid ...

  9. yii2之GridView小部件

    GridView小部件用于展示多条数据的列表.GridView小部件的使用需要数据提供器即yii\data\ActiveDataProvider的实例作为参数,所以 第一步就是要在控制器方法中创建这个 ...

随机推荐

  1. VBA对象模型(2)

    Excel对象模型简介 在介绍Excel对象模型之前,让我们先来看一个简单的例子.大多数工厂都是按这样的结构进行设置的:最上层为工厂总部,第二层次分为各个车间,在车间下面又分各班组.就这样组织在一起, ...

  2. python 第三方模块 转 https://github.com/masterpy/zwpy_lst

    Chardet,字符编码探测器,可以自动检测文本.网页.xml的编码. colorama,主要用来给文本添加各种颜色,并且非常简单易用. Prettytable,主要用于在终端或浏览器端构建格式化的输 ...

  3. JavaScript访问修改css样式表

    1.访问元素中style属性的css样式 可以根据属性的ID或name标签利用dom操作直接访问到内部的css样式,直接使用style对象访问 <div id="myid" ...

  4. Simplify Path [LeetCode]

    Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...

  5. PLSQL DEVELOPER 连接远程数据库 OCI客户端安装方法

    安装使用过PLSQL Dev都知道,要连接数据库,必须配置TNS(Transparence Network Substrate),而直接安装PLSQL Dev 之后,本机是没有Oracle HOME的 ...

  6. js在前端获取在本地上传图片的尺寸

    var MyTest = document.getElementById("upload_img").files[0];var reader = new FileReader(); ...

  7. BZOJ3057 圣主的考验

    Poetize11的T3 DP神优化= =反正蒟蒻不会 Orz ZYF竟然找到了题解,反正我是没找到T T(百度空间:你太沙茶了,不给你看题解2333) 然后就对着标程写了一遍,然后T了...233 ...

  8. [转载]Windows 7笔记本创建wifi热点供手机上网教程

    用智能手机的朋友会发现这样一个问题,智能手机比普通手机上网更耗流量.这是因为智能手机应用(软件)丰富,而且大部分应用都会自动联网.为此,许多人每月包了上百M的流量套餐,但用的时候还是小心翼翼,生怕流量 ...

  9. linux 安装 apache

    1.  系统基本信息 CentOS  6.4   内存2G  硬盘 200G   cpu 4核  (cat /proc/cpuinfo |grep 'processor'|wc -l  查看cpu核数 ...

  10. Js数据类型之——Date

    小猪曾经分享过一篇文章,主要是讲到后台使用c#将DataTime类型序列化到前台之后进行操作:具体请看传送门 今天小猪来分享在JS中的Data类型 类型说明 ECMAScript中的Data类型是在早 ...