假设数据库中会计科目数据表的字段为: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小时内与您取得联系。