本模型采用 `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 = [' │', ' ├─', ' └─'];
$tree->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` 是單純的數組,如圖所示:

`$newCategories` 是具有操作性的數組,如圖所示:

## 關鍵知識二