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

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

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

16、Cocos2dx 3.0游戏开发找小三之Node:父节点、子节点、傻傻分不清楚

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30476133 Cocos2d-x 采用了场景.层.精灵的层次结构来组织游戏元素, 与此同时,这个层次结构还对应了游戏的渲染层次,因此游戏元素可以组织成树形结构,称作渲染树. Cocos2d-x 把渲染树上的每一个游戏元素抽象为一个节点,即 Node. 一切游戏元素都继承自 Node,因此它们 都具有 Node 所提供的特性. Node 定义了一个可绘制

父节点和子节点事件重复绑定(如click)

以click事件为例,当父节点或子节点绑定了click事件后,点击该节点,事件会发生冒泡传递,即会造成事件重复绑定,这时候需要阻止事件的冒泡,采用stopPropagation 或cancelBubble等. stopPropagation() 方法 定义和用法 不再派发事件. 终止事件在传播过程的捕获.目标处理或起泡阶段进一步传播.调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点. 语法 event.stopPropagation() 说明 该方法将停止事件的传播,

JQuery的父、子、兄弟节点查找,节点的子节点循环

JQuery的父.子.兄弟节点查找,节点的子节点循环: http://www.cnblogs.com/mingforyou/p/4410054.html

TreeView 点击触发父节点、子节点的连锁反应选中与取消

TreeView 通常和CheckBoxs一起使用,涉及到选中与取消时,连锁翻译触发父节点.子节点的选中与取消. 只供个人今后学习使用,如有涉及到相同,为个人转载,请告知博主. 当我选择一个父节点,希望该父节点下所有的子节点都被选中,取消一个节点,希望他所有的父节点都取消,例如  代码如下所示 //取消节点选中状态之后,取消所有父节点的选中状态 private void setParentNodeCheckedState(TreeNode currNode, bool state) { Tree

DevExpress TreeList 拖动时中如何判断源节点作为目标节点的子节点还是兄弟节点

Posted on 2012-01-10 14:02 marcozh 阅读(1738) 评论(3) 编辑 收藏 最近用了Dev的Treelist控 件,其中用到了拖动方法.众所周知的是,Dev的Treelist封装了原先用递归才能实现的树状显示,所以写代码非常方便.以前我做树形表,还需要一些 辅助字段如Level.HasChild等,维护起来也有点小麻烦,现在只要一个ParentId字段就够了,只要设置一下KeyFieldName和 ParentFieldName就可以了. 如: tlCateg

轻松学习JavaScript二十一:DOM编程学习之获取元素节点的子节点和属性节点

我们这里所说的获取元素节点的所有子节点包含元素子节点和文本节点两种.还是拿上一篇博文的代码实例进行 分析: <span style="font-size:18px;"><span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1

C#中treeview的问题,如何区分根节点和子节点以及根节点和根节点的兄弟节点?

根节点的Level属性为0,一级子节点Level属性为1,二级子节点Level属性为2,以此类推:同级节点可以用索引.名称.文本来区分.用索引区分根节点时,TreeView.Nodes[0]就是第一个根节点,TreeView.Nodes[1]就是第二个根节点,以此类推:用索引区分一级子节点时,TreeView.Nodes[0].Nodes[0]为第一个根节点的第一个子节点,TreeView.Nodes[0].Nodes[1]是第一个根节点的第二个子节点,以此类推: 2.如何获取TreeView点

JS获取元素节点的子节点

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <titl

JS创建一个元素节点, 并把该节点添加为文档中指定节点的子节点

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <titl