无限级分类展示

无限极分类的展示:

 

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.建立的展示的类


/**
* 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 =";
       
 if($cen== 1){
           
 $tree .=" class='sidebar-menu' ";
        }
else{
           
 $tree .=" class='treeview-menu' ";
        }
       
 $tree .=">";
       
 foreach( $node as $v ){
           
 if($v-> parent_id==$pid ){
               
 $tree.= ";
               
 if( $cen==1){
                   
 $tree.= " class='treeview'" ;
                }
               
 $tree.= ">";
               
 $tree.= "" ;
               
 $tree.= "";
               
 $tree.= "";
               
 $tree.= $v->title ;
               
 $tree.= ""
;
               
 $have_next= false;
               
 foreach( $node as $n ){
                   
 if( $n->parent_id ==$v-> id){
                       
 $have_next=true;
                    }
                }
               
 if( $have_next){
                   
 $tree.= "";
                }
               
 $tree.= "
"
;
               
 $cen+= 1;
               
 $tree.= $this->mergeUlTree ($node, $cen,$v ->id);
               
 $tree.= "";
            }
        }
       
 return $tree ."";
    }
}

2.视图中的代码如下:


#code ...  

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

 

#code ... 

     

$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

 

你可能感兴趣的:(yii2.0)