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控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
php修改时间格式的代码
May 29 PHP
PHP数据库调用类调用实例(详细注释)
Jul 12 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
Jun 13 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
PHP反射API示例分享
Oct 08 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 PHP
七种PHP开发环境搭建工具
Jun 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
php下批量挂马和批量清马代码
2011/02/27 PHP
php 保留字列表
2012/10/04 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
php实现登陆模块功能示例
2016/10/20 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
requireJS使用指南
2016/04/27 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
优化Python代码使其加快作用域内的查找
2015/03/30 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
使用matplotlib画散点图的方法
2018/05/25 Python
np.dot()函数的用法详解
2020/01/17 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
深入了解Python 变量作用域
2020/07/24 Python
python调用百度API实现人脸识别
2020/11/17 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
中学生个人自我评价
2014/02/06 职场文书
一年级评语大全
2014/04/23 职场文书
档案工作个人总结
2015/03/03 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
PHP基本语法
2021/03/31 PHP
Nginx本地目录映射实现代码实例
2021/03/31 Servers
golang 生成对应的数据表struct定义操作
2021/04/28 Golang