文档章节

php树型菜单

i
 iturtle
发布于 2014/11/14 12:13
字数 367
阅读 38
收藏 0

通过处理array,添加level,is_leaf属性实现 树型菜单

公共类

  通过处理array,添加level,is_leaf属性实现 树型菜单
    /*树形分类添加节点属性
	 *$data, 要处理的节点数组
	 *$pid,	父类ID
	 *$prefix,  字段前缀 如chh_pid
	 *$tree   array()  
    **/

     function getTree($data, $pid,$prefix,$tree) {
 		
     	
        foreach($data as $k => $v)
        {
          
          $v[$prefix.'level'] = getLevel($data,$pid,1,$prefix);  //为每个节点计算层级

          if(hashChild($data,$v[$prefix.'id'],$prefix)){//判断每个节点是否有子节点
             $v['is_leaf'] =1;

          }else{

             $v['is_leaf'] =0;
          }


           if($v[$prefix.'pid'] == $pid)
           {         

            
             if(count($tree)==0){

                 $tree[] = $v;
             }else{

              array_push($tree, $v);
             }
            
            if(!empty($v[$prefix.'id']))
            	$tmp =  getTree($data, $v[$prefix.'id'],$prefix);//递归查找子节点
             
            if(count($tmp)>0){
             
              foreach ($tmp as $key => $value) {

                 array_push($tree, $value);
              }
             
            }
           
         }
        }
       
        return $tree;
    }

    /**  判断是否有子节点
    *$data, 要处理的节点数组
	 *$pid,	父类ID
	 *$prefix,  字段前缀 如chh_pid
	 */
     function hashChild($data,$id,$prefix) {
        foreach($data as $k => $v){
          if($v[$prefix.'pid'] == $id){
            return true;
          }
        }
        return false;

     }

    /**  获取等级
     *$data, 要处理的节点数组
	 *$pid,	父类ID
	 *$prefix,  字段前缀 如chh_pid
	 */
     function getLevel($data,$id,$level,$prefix) {
       if($level>100)  return $level;
        foreach($data as $k => $v){
           
          if($v[$prefix.'id']==$id){

              $re =  $v[$prefix.'pid'];
              $level++;
              if(!empty($v[$prefix.'pid']))
            	 $level =getLevel($data,$re,$level);
         }
        }
        
        return $level;

     }

    调用:

$lst=$Term ->field('term_id,term_name,term_pid') ->order('term_pid asc ,term_order asc')-> select();
$lst= getTree($lst,0,'term_',array());

    页面处理

<select class="form-control" name="term_id" style="width:500px"> 
<foreach name="termpid" item="v">
<option value="	{$v['term_id']}" <if condition="$v['term_id']  eq  $vo['term_id'] ">selected</if>>
<?php for ($i=1;$i<$v['term_level'];$i++){ ?>
&nbsp;
<?php } ?>
{$v['term_name']}</option>
</foreach>
</select>


© 著作权归作者所有

共有 人打赏支持
i
粉丝 0
博文 49
码字总数 13347
作品 0
广州
Tree+Accordion+"Easyui-layout"+Tab框架

[ 分类面板+树型菜单+Tab标签+UI布局功能 ]实现后台框架 通过选择: 分类面板+树型菜单来选择菜单项, 再通过Tab标签实现菜单项内的详细内容增加。 Tab标签当中的详细内容部分可以通过直接选择...

Amamatthew
2014/09/22
0
0
WinSCP链接服务器 关联Putty 日志中文乱码

WinSCP:下载地址 1, 打开WinSCP, 在登录会话界面中选定将要登录的会话. 2, 点击旁边的"编辑"按钮. 3, 在左侧树型菜单中找到"环境"项, 并打开它. 4, 在右侧中一项为"文件名UTF-8编码", 选择"...

orec
2016/09/24
22
0
OpenJWebv1.2实现了树型功能的创建向导

在Java Web应用中,经常会遇到许多树型维护的功能,例如功能菜单树,网站栏目树,商品分类树,这些树的开发耗费了软件公司开发人员大量的开发时间.实际上,通过一个好的设计,树的功能是可以用一个通...

迷途d书童
2012/03/09
52
0
善学记事本

基于Qt-GraphicsView的树型记事本,有兴趣可以下载玩玩。 本记事本实现的功能如下: 1.树型结构文件节点。 2.每个节点对应一份文件。 3.支持桌面停靠。 4.随系统自启动。 5.托盘菜单...

心路xinlu
2014/07/27
623
0
vue for做树型菜单丢失节点

我用vue做树型菜单,刚开始可以正常显示,但树型节点展开收缩三四次后有些节点就不显示了,在google调试数据中可以看到那些没有显示的节点被自动加了display:none 第一次用vue,有没有与我遇...

疯狂的小潘
2017/03/02
251
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
6
0
现场看路演了!

HiBlock
昨天
16
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部