无限级分类展示

来源:互联网 发布:六边形战士 知乎 编辑:程序博客网 时间:2024/04/30 19:44
无限极分类的展示:

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);
?>
0 0
原创粉丝点击