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压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
PHP中feof()函数实例测试
Aug 23 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
PHP 微信支付类 demo
Nov 30 PHP
php封装的page分页类完整实例
Oct 18 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 PHP
解决laravel查询构造器中的别名问题
Oct 17 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
一个php作的文本留言本的例子(三)
2006/10/09 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
php无限遍历目录示例
2014/02/21 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
Python入门教程之if语句的用法
2015/05/14 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python无序链表删除重复项的方法
2020/01/17 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
2014自荐信的写作技巧
2014/01/28 职场文书
合作意向书格式及范文
2014/03/31 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
成本会计实训报告
2014/11/05 职场文书
出生公证书
2015/01/23 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏