YII2.0 中无限级分类展示

无限极分类的展示:

1.要建立数据库表

CREATE TABLE `menu` (
`id` int( 11) NOT NULL AUTO_INCREMENT COMMENT 'id',
 
 `sort_id` int(11) NOT NULL COMMENT '排序' ,
 
 `parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父级 id',
 
 `title` varchar(255) NOT NULL COMMENT '标题' ,
 
 `icon` varchar( 255) DEFAULT 'fa fa-circle-o' COMMENT '图标 ',
 
 `route` varchar(255) DEFAULT NULL COMMENT ' 路径',
 
 `url` varchar( 255) DEFAULT NULL COMMENT '外链' ,
 
 `target` enum('_self' ,'_blank') DEFAULT '_self',
 
 `ajax` enum( 'yes','no' ) DEFAULT 'no' COMMENT '弹出层 ',
 
 `show` enum( 'yes','no' ) DEFAULT 'no' COMMENT '后台显示 ',
 
 `remark` varchar(255) DEFAULT NULL COMMENT ' 描述',
 
 `create_at` int(11) NOT NULL COMMENT '创建时间',
 
 `update_at` int(11) NOT NULL COMMENT '修改时间',
 
 PRIMARY KEY ( `id`)
)
 ENGINE =InnoDB AUTO_INCREMENT= 7 DEFAULT CHARSET= utf8

2.建立的展示的类

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2015/6/9
* Time: 10:10
*/

namespace backend\controllers ;

class SideBar{

   
 /*
     * $node
 查询数据库之后的结果集
     * $cen 循环到第几层
     * $pid 父级的id,第一级的父级默认为 0
     *
 目的:生成 UL Li嵌套的无限级UL列表
     */
   
 public function  mergeUlTree($node ,$cen= 1,$pid =0){
       
 $tree ="<ul";
       
 if($cen== 1){
           
 $tree .=" class='sidebar-menu' ";
        }
else{
           
 $tree .=" class='treeview-menu' ";
        }
       
 $tree .=">";
       
 foreach( $node as $v ){
           
 if($v-> parent_id==$pid ){
               
 $tree.= "<li";
               
 if( $cen==1){
                   
 $tree.= " class='treeview'" ;
                }
               
 $tree.= ">";
               
 $tree.= "<a href='#'>" ;
               
 $tree.= "<i class='".$v ->icon. "'></i>";
               
 $tree.= "<span>";
               
 $tree.= $v->title ;
               
 $tree.= "</span>";
               
 $have_next= false;
               
 foreach( $node as $n ){
                   
 if( $n->parent_id ==$v-> id){
                       
 $have_next=true;
                    }
                }
               
 if( $have_next){
                   
 $tree.= "<i class='fa fa-angle-left pull-right'></i>";
                }
               
 $tree.= "</a>";
               
 $cen+= 1;
               
 $tree.= $this->mergeUlTree ($node, $cen,$v ->id);
               
 $tree.= "</li>";
            }
        }
       
 return $tree ."</ul>";
    }
}

2.视图中的代码如下:

<?php
#code ...  

use backend\ controllers\SideBar ;
use backend\ models\Menu ;
?>

#code ... 

     <?php

$sideBar=new SideBar ;
$list=Menu ::find() ->select( 'id,sort_id,parent_id,title')-> orderBy(['sort_id' =>SORT_DESC]) ->all();
echo $sideBar-> mergeUlTree($list ,1, 0);
?>

来自于datou:https://github.com/datou-leo/ci

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reg183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值