## 思路
一:獲取 `parent_id`,默認為0
二:查詢全部菜單,
三:`foreach` 形成帶有 `selected` 的新數組
四:用 `Tree` 類形成帶有樹形結構結構的內容
五:賦值
## 代碼
```
<?php
namespace app\agent\controller;
use think\Controller;
use think\Db;
use tree\Tree;
class MenuController extends Controller
{
/**
* 后臺菜單添加
*/
public function add()
{
$tree = new Tree();
$parentId = $this->request->param("parent_id", 0, 'intval');
$result = Db::name('AdminMenu')->order(["list_order" => "ASC"])->select();
$array = [];
foreach ($result as $r) {
$r['selected'] = $r['id'] == $parentId ? 'selected' : '';
$array[] = $r;
}
$str = "<option value='\$id' \$selected>\$spacer \$name</option>";
$tree->init($array);
$selectCategory = $tree->getTree(0, $str);
$this->assign("select_category", $selectCategory);
return $this->fetch();
}
}
```
## 要點解析
如圖所示,這里是關鍵,形成一個帶`selected` 的新數組

- 附錄
- 邏輯與數據模型
- HTML約定-bootstrap
- HTML約定-LayUI
- 角色管理 role
- 數據表
- 列表
- 控制器
- 視圖
- 視圖-layui
- 角色添加
- 控制器
- 視圖
- 角色添加提交
- 控制器
- 驗證
- 角色修改
- 控制器
- 視圖
- 角色修改提交
- 控制器
- 角色刪除
- 控制器
- 權限設置
- 控制器
- 視圖
- 模型
- 權限設置提交
- 用戶 user
- 數據表
- 列表
- 控制器
- 視圖
- 模型
- 添加
- 控制器
- 視圖
- 添加提交
- 控制器
- 驗證器
- 編輯
- 控制器
- 視圖
- 編輯提交
- 控制器
- 驗證器
- 刪除
- 停用啟用
- 角色用戶中間表role_user
- 菜單管理
- 數據表
- 表格折疊列表
- 控制器
- 視圖
- 全部列表
- 控制器
- 視圖
- 填加
- 控制器
- 視圖
- 填加提交
- 控制器
- 驗證器
- 編輯
- 控制器
- 視圖
- 編輯提交
- 控制器
- 驗證器
- 刪除
- 控制器
- 視圖
- 導入菜單
- 視圖
- 控制器
- 特別注意
- annotation
- 導出菜單
- 視圖
- 控制器
- 排序
- 控制器
- 視圖
- 模型