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 相关文章推荐
对盗链说再见...
Oct 09 PHP
php的一个登录的类 [推荐]
Mar 16 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
php简单处理XML数据的方法示例
May 19 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 PHP
PHP实现抽奖功能实例代码
Jun 30 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
如何使用GDB调试PHP程序
2015/12/08 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
一些可能会用到的Node.js面试题
2019/06/15 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
wxPython之解决闪烁的问题
2018/01/15 Python
Python检查ping终端的方法
2019/01/26 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
文秘专业个人求职信
2013/12/22 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
培训班主持词
2014/03/28 职场文书
人才市场接收函
2015/01/30 职场文书
简历自我评价优缺点
2015/03/11 职场文书
道歉的话怎么说
2015/05/12 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书