ThinkPHP使用EasyUI实现会计科目树形菜单
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ThinkPHP使用EasyUI实现会计科目树形菜单,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1914字,纯文字阅读大概需要3分钟。
内容图文
本文主要讲解了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; } }
类似上述的数据(如部门,地区等)需要构建树形菜单的简单修改代码后基本都能实现类似功能。
相关推荐:
实例详解thinkphp5 URL和路由功能
Thinkphp中如何连接分布式数据库
thinkphp3.2中替换入口文件
以上就是ThinkPHP使用EasyUI实现会计科目树形菜单的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的ThinkPHP使用EasyUI实现会计科目树形菜单全部内容,希望文章能够帮你解决ThinkPHP使用EasyUI实现会计科目树形菜单所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。