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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
文章推荐系统(三)
Oct 09 PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 PHP
php中heredoc与nowdoc介绍
Dec 25 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
Aug 01 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
PHP工厂模式简单实现方法示例
May 23 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 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 setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
详解React 元素渲染
2020/07/07 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
Python3.8中使用f-strings调试
2019/05/22 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
中医专业职业生涯规划书范文
2014/01/04 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
审计班子对照检查材料
2014/08/27 职场文书
销售顾问工作计划书
2014/09/15 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL