全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法

假设数据库中会计科目数据表的字段为:id,code,name,islast。分别为自增主键,科目编码,科目名称,是否为末级("1"表示末级科目)。

这里在Thinkphp的模型层中使用递归来构建ComboTree所需的数据,代码及注解如下:

namespace Home\Model;
use Think\Model;

class AccountModel extends Model{

  public function getTreeList(){  
  $data = $this->field('id,code,name,islast')->select(); 
  foreach($data as &$v){        //这里加入了元素pid,用来标识父级id的   
   $len = strlen($v['code']);
   if($len == 3){          //这里假设长度为3位的科目编码是一级,5位为二级科目,7位为三级,以此类推
    $v['pid'] = 0; 
   } else {
    $v['pid'] = substr($v['code'],0,$len-2); 
   }  
  }
  return $this->createTree($data); //生成ComboTree所需的数据结构
 }
 
 //递归的方式生成子树
 private function createSubTree($data,$pid){
  $tree = array();
  foreach($data as $k=>$v){
   if($v['pid'] == $pid){
    $newDate = array(
     'id' => $v['id'],
     'text'=>$v['name'],
     'state'=>($v['islast'] != 1)?'closed':'open'
    ); 
    if($v['islast'] != 1){        //如果不是末级科目调用自身生成子数据
     $subData = $this->createSubTree($data,$v['code']);
     if(!empty($subData)){
      $newDate['children'] = $subData;  
     }
    }
    array_push($tree,$newDate);
   }   
  } 
  return $tree;
 }
 
 //生成树,先从一级会计科目分类开始创建树形菜单数据
 private function createTree($data){  
  $ret = array();
  foreach($data as $k => $v){
   if($v['pid'] == 0){
    $newDate = array(  //创建为ComboTree能够识别的格式,这里我没有更好的办法了,只能这样处理
     'id' => $v['id'],
     'text'=>$v['name'],
     'state'=>'closed'
    ); 
    $subData = $this->createSubTree($data,$v['code']);
    if(!empty($subData)){
     $newDate['children'] = $subData;  
    }
    $ret[] = $newDate; 
   }    
  }
  return $ret;
 }  
}

类似上述的数据(如部门,地区等)需要构建树形菜单的简单修改代码后基本都能实现类似功能。

以上这篇ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# ComboTree  # 树形菜单  # thinkphp实现面包屑导航(当前位置)例子分享  # thinkPHP实现的联动菜单功能详解  # thinkPHP基于ajax实现的菜单与分页示例  # ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单  # ThinkPHP无限级分类原理实现留言与回复功能实例  # thinkphp实现无限分类(使用递归)  # ThinkPHP自动填充实现无限级分类的方法  # ThinkPHP实现递归无级分类——代码少  # 使用ThinkPHP的自动完成实现无限级分类实例详解  # tp5框架前台无限极导航菜单类实现方法分析  # 递归  # 所需  # 给大家  # 子树  # 都能  # 以此类推  # 数据结构  # 希望能  # 如果不是  # 分别为  # 这篇  # 数据库中  # 小编  # 大家多多  # 主键  # 长度为  # 层中  # brush  # class 


相关文章: 西安大型网站制作公司,西安招聘网站最好的是哪个?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  建站之星安装模板失败:服务器环境不兼容?  宝塔新建站点为何无法访问?如何排查?  C++如何使用std::optional?(处理可选值)  如何续费美橙建站之星域名及服务?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  宝塔建站后网页无法访问如何解决?  购物网站制作公司有哪些,哪个购物网站比较好?  如何用花生壳三步快速搭建专属网站?  网站制作需要会哪些技术,建立一个网站要花费多少?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何通过FTP空间快速搭建安全高效网站?  c# 在高并发场景下,委托和接口调用的性能对比  网页设计网站制作软件,microsoft office哪个可以创建网页?  如何选择域名并搭建高效网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  如何在建站宝盒中设置产品搜索功能?  北京企业网站设计制作公司,北京铁路集团官方网站?  制作网站的公司有哪些,做一个公司网站要多少钱?  详解jQuery停止动画——stop()方法的使用  如何在IIS中新建站点并解决端口绑定冲突?  如何解决ASP生成WAP建站中文乱码问题?  建站之星在线客服如何快速接入解答?  如何通过山东自助建站平台快速注册域名?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  网站制作壁纸教程视频,电脑壁纸网站?  相册网站制作软件,图片上的网址怎么复制?  做企业网站制作流程,企业网站制作基本流程有哪些?  香港网站服务器数量如何影响SEO优化效果?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  ,如何利用word制作宣传手册?  如何快速重置建站主机并恢复默认配置?  威客平台建站流程解析:高效搭建教程与设计优化方案  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何在Windows 2008云服务器安全搭建网站?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何用PHP工具快速搭建高效网站?  如何通过PHP快速构建高效问答网站功能?  如何在阿里云服务器自主搭建网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  制作网站的模板软件,网站怎么建设?  制作网页的网站有哪些,电脑上怎么做网页?  C#如何序列化对象为XML XmlSerializer用法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。