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 编写的日历
Oct 09 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
php cookie名使用点号(句号)会被转换
Oct 23 PHP
php中in_array函数用法探究
Nov 25 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
python 字符串格式化代码
2013/03/17 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
python编写猜数字小游戏
2019/10/06 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
python自动识别文本编码格式代码
2019/12/26 Python
通过python检测字符串的字母
2020/02/18 Python
Python中if有多个条件处理方法
2020/02/26 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
测绘工程专业个人自我评价
2013/12/01 职场文书
物流专业求职计划书
2014/01/10 职场文书
酒店总经理助理职责
2014/02/12 职场文书
同意迁入证明模板
2014/10/26 职场文书
停电放假通知
2015/04/14 职场文书
七年级作文之秋游
2019/10/21 职场文书
python+opencv实现目标跟踪过程
2022/06/21 Python
hive数据仓库新增字段方法
2022/06/25 数据库