首页 > 代码库 > 实现根据父节点显示子节点的无极限分类的完整操作

实现根据父节点显示子节点的无极限分类的完整操作

技术分享

 数据表是设计 包含 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>

 

 

  

实现根据父节点显示子节点的无极限分类的完整操作