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 相关文章推荐
提取HTML标签
Oct 09 PHP
基于mysql的论坛(7)
Oct 09 PHP
让你同时上传 1000 个文件 (一)
Oct 09 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
Apr 24 PHP
php源代码安装常见错误与解决办法分享
May 28 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
PHP使用PDO连接ACCESS数据库
Mar 05 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
Jan 08 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
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
PHP4实际应用经验篇(5)
2006/10/09 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
Vue.js仿Select下拉框效果
2020/02/18 Javascript
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
Python中import机制详解
2017/11/14 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
python实现电脑自动关机
2018/06/20 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
python的scipy实现插值的示例代码
2019/11/12 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
Python多进程编程常用方法解析
2020/03/26 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
网络教育毕业生自我鉴定
2013/10/10 职场文书
英语硕士生求职简历的自我评价
2013/10/15 职场文书
上级检查欢迎词
2014/01/18 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
爱护草坪标语
2014/06/24 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
大学生入党群众意见书
2015/06/02 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python