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