ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
本模型采用 `adminCategoryTableTree` 方法 >说明:此模型需要用到 `Tree` 类。有关 `Tree` 类的使用会在附件中说明并使用! 思路:这里我们只需要遍历数组,再形成带有管理功能的数组。利用`Tree`类`init`方法初始化,再用`getTree`方法获取遍历数组即可!根本不再需要用更多的方法来操作了! 是不是很简单的呢! 这里可以根据实际情况将 `$tpl` 进行默认更改! ## 代码 这里先介绍代码,下边会讲到一些关键性知识。 ``` <?php namespace app\agent\model; use think\Model; use tree\Tree; class AgentCategoryModel extends Model { /** * 获取表格树 * @param int|array $currentIds * @param string $tpl * @return string */ public function adminCategoryTableTree($currentIds = 0, $tpl = '') { $where = ['delete_time' => 0]; $categories = $this->order("list_order ASC")->where($where)->select()->toArray(); if (!is_array($currentIds)) { $currentIds = [$currentIds]; } $newCategories = []; foreach ($categories as $item) { $item['checked'] = in_array($item['id'], $currentIds) ? "checked" : ""; $item['url'] = url('agent/List/index', ['id' => $item['id']]);; $item['str_action'] = '<a href="' . url("AdminCategory/add", ["parent" => $item['id']]) . '">添加子分类</a> <a href="' . url("AdminCategory/edit", ["id" => $item['id']]) . '">' . lang('EDIT') . '</a> <a class="js-ajax-delete" href="' . url("AdminCategory/delete", ["id" => $item['id']]) . '">' . lang('DELETE') . '</a> '; array_push($newCategories, $item); } $tree = new Tree(); $tree->icon = ['&nbsp;&nbsp;│', '&nbsp;&nbsp;├─', '&nbsp;&nbsp;└─']; $tree->nbsp = '&nbsp;&nbsp;'; $tree->init($newCategories); if (empty($tpl)) { $tpl = "<tr> <td><input name='list_orders[\$id]' type='text' size='3' value='\$list_order' class='input-order'></td> <td>\$id</td> <td>\$spacer <a href='\$url' target='_blank'>\$name</a></td> <td>\$description</td> <td>\$str_action</td> </tr>"; } $treeStr = $tree->getTree(0, $tpl); return $treeStr; } } ``` ## 关键知识一 这里关键的是怎样把 `$categories` 更改为 `$newCategories` 数组。 那么这两种的数据分别是什么呢? `$categories` 是单纯的数组,如图所示: ![mark](http://olbhidnfa.bkt.clouddn.com/blog/20171014-224446553.png) `$newCategories` 是具有操作性的数组,如图所示: ![mark](http://olbhidnfa.bkt.clouddn.com/blog/20171014-224553397.png) ## 关键知识二