博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现根据父节点显示子节点的无极限分类的完整操作
阅读量:6253 次
发布时间:2019-06-22

本文共 3265 字,大约阅读时间需要 10 分钟。

 数据表是设计 包含 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视图的展示

功能点名称 功能点所对应的controller 功能点所对应的action 操作
系统功能点 添加子菜单
添加下级功能点 编辑 删除

 功能点二 递归删除父节点下面的所有子节点

控制器

public function actionFunctionPointDeleteHandler()    {        $request = Yii::$app->request;        $id = $request->post('id');        $ids = FunctionPoint::getAllChildIds($id);        $ids = $id.$ids;        $result= FunctionPoint::deleteFunctionPoint($ids);        return $this->renderJson(null, $result ? 0 : 1, $result ? '操作成功' : '操作失败');    }
/ * 删除系统功能点     * @param $ids     * @return bool     */    public static function deleteFunctionPoint($ids)    {//        $cmd = \Yii::$app->db->createCommand('UPDATE t_boss_function_point SET is_deleted = 1 WHERE FIND_IN_SET(id,:ids);');        $cmd = \Yii::$app->db->createCommand('CALL p_boss_function_point_delete(:ids);');        $cmd->bindValue(':ids', $ids);        $result = $cmd->execute();        return $result > 0;    }    /**     * 获得所有的子节点 的id值     * @param $parentId     * @return string   返回id字符串     */    public static function getAllChildIds($parentId)    {        $ids ='';        $sql = 'SELECT `id` 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 $v){            $ids .=",".$v['id'];            $ids .= self::getAllChildIds($v['id']);        }        return $ids;    }}

 

 

  

转载于:https://www.cnblogs.com/lt-com/p/6785273.html

你可能感兴趣的文章
C#中使用Monitor类、Lock和Mutex类来同步多线程的执行
查看>>
Jquery 下拉框取值
查看>>
POJ 1287 Networking 【最小生成树Kruskal】
查看>>
IDEA中使用Maven创建Java Web项目
查看>>
2017.12.25
查看>>
react--1.创建项目
查看>>
C++ 与OpenCV 学习笔记
查看>>
【CV学习7】FAST算法详解
查看>>
11月20日学习内容整理:jquery插件
查看>>
预科班第四次考核总结
查看>>
【js】再谈移动端的模态框实现
查看>>
html
查看>>
Java变量类型
查看>>
[leetcode-89-Gray Code]
查看>>
mysql 存储过程的基本语法知识
查看>>
数据分析师到底在做什么?
查看>>
pt-heartbeat工具监控MySQL复制延迟
查看>>
指尖下的js —— 多触式web前端开发之三:处理复杂手势(转)
查看>>
spring boot项目配置文件集合
查看>>
cube-ui的用法
查看>>