无限极分类的展示:
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);
?>