数据表是设计 包含 id name pid 三者 就可以了
第一步: controller:
public function actionFunctionPoint() { $items = FunctionPoint::getFunctionPoint(); return $this->render(‘function-point‘, [ ‘items‘ => $items, ]); }
第二部 model操作数据库
/** * 获得所有系统功能 * @return array */ public static function getFunctionPoint() { $data = []; self::_getFunctionPointList($data,0,1); return $data; } /**根据父类元素 查询所有子类原生 * @param $parentId pid * @return array */ public static function _getFunctionPointList(&$data,$parentId,$level) { $sql = ‘SELECT * FROM t_boss_function_point WHERE is_deleted =0 AND parent_id =:parentId‘; $cmd = \Yii::$app->db->createCommand($sql); $cmd->bindValue(‘:parentId‘, $parentId); $results = $cmd->queryAll(); foreach ($results as $result) { $result[‘level‘] = $level; array_push($data,$result); self::_getFunctionPointList($data,$result[‘id‘],$level+1); } }
第三步 :view视图的展示
<table class="table table-bordered table-hover"> <thead> <tr> <th>功能点名称</th> <th>功能点所对应的controller</th> <th>功能点所对应的action</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">系统功能点</td> <td></td> <td></td> <td> <a class="btn btn-link" href="javascript:onOperateData(‘add‘)">添加子菜单</a> </td> </tr> <?php foreach ($items as $item): ?> <tr> <td style="text-align: left;padding-left: <?= $item[‘level‘]*25 ?>px"><?= $item[‘name‘] ?></td> <td> <?= $item[‘controller‘] ?> </td> <td><?= $item[‘action‘] ?></td> <td> <a class="btn btn-link" href="javascript:onOperateData(‘add‘,‘<?= $item[‘id‘] ?>‘)">添加下级功能点</a> <a class="btn btn-link" href="javascript:onOperateData(‘edit‘,‘<?= $item[‘id‘] ?>‘)">编辑</a> <a class="btn btn-link" href="javascript:deleteFunctionPonit(‘<?= $item[‘id‘] ?>‘)">删除</a> </td> </tr> <?php endforeach; ?> </tbody> </table>
时间: 2024-10-11 17:39:31