ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
发布时间 - 2026-01-11 01:48:11 点击率:次假设数据库中会计科目数据表的字段为: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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何在阿里云购买域名并搭建网站?
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何快速搭建二级域名独立网站?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel如何创建自定义Artisan命令?(代码示例)
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Bootstrap整体框架之JavaScript插件架构
详解阿里云nginx服务器多站点的配置
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
如何快速搭建高效可靠的建站解决方案?
如何在万网主机上快速搭建网站?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
济南网站建设制作公司,室内设计网站一般都有哪些功能?
手机软键盘弹出时影响布局的解决方法
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
,南京靠谱的征婚网站?
如何在香港服务器上快速搭建免备案网站?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
中山网站制作网页,中山新生登记系统登记流程?
北京网站制作公司哪家好一点,北京租房网站有哪些?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
javascript中的try catch异常捕获机制用法分析
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel如何处理CORS跨域请求?(配置示例)
如何利用DOS批处理实现定时关机操作详解
简单实现jsp分页
怎么用AI帮你设计一套个性化的手机App图标?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
如何用狗爹虚拟主机快速搭建网站?
C++时间戳转换成日期时间的步骤和示例代码
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
高端建站如何打造兼具美学与转化的品牌官网?
Laravel如何发送系统通知?(Notification渠道示例)
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何在橙子建站上传落地页?操作指南详解
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何在VPS电脑上快速搭建网站?
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
高防服务器租用首荐平台,企业级优惠套餐快速部署
海南网站制作公司有哪些,海口网是哪家的?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
上一篇:高效液相色谱塔板数计算
上一篇:高效液相色谱塔板数计算

