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 相关文章推荐
discuz安全提问算法
Jun 06 PHP
Wordpress php 分页代码
Oct 21 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
PHP session会话的安全性分析
Sep 08 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
兼容ie6浏览器的php下载文件代码分享
Jul 14 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
PHP实现的增强性mhash函数
May 27 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 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中PDO的错误处理
2011/09/04 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
使用js画图之饼图
2015/01/12 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
python的concat等多种用法详解
2018/11/28 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
消防宣传口号
2014/06/16 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
入党自传范文2015
2015/06/26 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis