全网整合营销服务商

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

免费咨询热线: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 


相关文章: 车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  TestNG的testng.xml配置文件怎么写  兔展官网 在线制作,怎样制作微信请帖?  网站制作话术技巧,网站推广做的好怎么话术?  MySQL查询结果复制到新表的方法(更新、插入)  建站之星云端配置指南:模板选择与SEO优化一键生成  Java解压缩zip - 解压缩多个文件或文件夹实例  上海网站制作开发公司,上海买房比较好的网站有哪些?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  c# 服务器GC和工作站GC的区别和设置  如何选择建站程序?包含哪些必备功能与类型?  建站上市公司网站建设方案与SEO优化服务定制指南  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  建站之星如何取消后台验证码生成?  建站之星伪静态规则如何正确配置?  建站之星安装提示数据库无法连接如何解决?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何在搬瓦工VPS快速搭建网站?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  七夕网站制作视频,七夕大促活动怎么报名?  如何制作网站标识牌,动态网站如何制作(教程)?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  网站专业制作公司有哪些,做一个公司网站要多少钱?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  建站之星安装后如何配置SEO及设计样式?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  北京网站制作公司哪家好一点,北京租房网站有哪些?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何在Windows虚拟主机上快速搭建网站?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  ,有什么在线背英语单词效率比较高的网站?  nginx修改上传文件大小限制的方法  建站之星安装步骤有哪些常见问题?  学校建站服务器如何选型才能满足性能需求?  如何撰写建站申请书?关键要点有哪些?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  定制建站是什么?如何实现个性化需求?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在IIS中新建站点并配置端口与物理路径?  如何高效生成建站之星成品网站源码?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  宿州网站制作公司兴策,安徽省低保查询网站?  黑客入侵网站服务器的常见手法有哪些?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  建站之星好吗?新手能否轻松上手建站? 

您的项目需求

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