yii框架无限极分类的实现方法


Posted in PHP onApril 08, 2017

用yii框架做了一个无限极分类,主要的数组转换都是粘贴的别人的代码,但还是不要脸的写出来,方便以后自己看

用的是递归,不是path路径

控制器:

protected function subtree($arr,$id=0,$lev=1){
    $subs = array(); // 子孙数组
    foreach($arr as $v) {
      if($v['parent_id'] == $id) {
        $v['lev'] = $lev;
        $subs[] = $v; // 举例说找到array('id'=>1,'name'=>'安徽','parent'=>0),
        $subs = array_merge($subs,$this->subtree($arr,$v['cat_id'],$lev+1));
      }
    }
    return $subs;
  }

public function actionCreate()
  {
    $model = new EcsCategory();
    $query = new \yii\db\Query();
    $query->select('*')
      ->from('ecs_category');
    $command = $query->createCommand();
    $res=$command->queryAll();
    $tree = $this->subtree($res,0,1);
    foreach($tree as $k=> $v) {
      $tree[$k]['new_cat_name']=str_repeat('--',$v['lev']).$v['cat_name'].str_repeat('--',$v['lev']); //str_repeat — 重复一个字符串
    }
    $arr=array(
      'new_cat_name'=>'顶级分类',
      'cat_id'=>0
    );
    array_unshift($tree,$arr);
    if ($model->load(Yii::$app->request->post()) && $model->save()) {
      return $this->redirect(['view', 'id' => $model->cat_id]);
    } else {
      return $this->render('create', [
        'model' => $model,
        'data'=>$tree,
      ]);
    }
  }

视图:

use \yii\helpers\ArrayHelper;

<?= $form->field($model, 'parent_id')->dropDownList(ArrayHelper::map($data,'cat_id','new_cat_name') ,['prompt' => '请选择父级分类']) ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
那些年一起学习的PHP(三)
Mar 22 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
php实现可逆加密的方法
Aug 11 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
微信自定义分享php代码分析
Nov 24 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP下载远程图片的几种方法总结
Apr 07 #PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 #PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 #PHP
php 根据自增id创建唯一编号类
Apr 06 #PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 #PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 #PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 #PHP
You might like
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
Python定义函数实现累计求和操作
2020/05/03 Python
Python 实现一个计时器
2020/07/28 Python
Pycharm调试程序技巧小结
2020/08/08 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
爱心捐书活动总结
2014/07/05 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
开学典礼观后感
2015/06/15 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书