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读取msn上的用户信息类
Dec 05 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
PHP生成json和xml类型接口数据格式
May 17 PHP
使用php-timeit估计php函数的执行时间
Sep 06 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
php版微信公众平台接口开发之智能回复开发教程
Sep 22 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
php和html的区别点详细总结
Sep 24 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
php网站地图生成类示例
2014/01/13 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
AngularJS基础知识
2014/12/21 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python爬取淘宝商品销量信息
2018/11/16 Python
python添加菜单图文讲解
2019/06/04 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
党校学习自我鉴定
2014/02/24 职场文书
2014年端午节活动方案
2014/03/11 职场文书
初中生操行评语大全
2014/04/24 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
城南旧事电影观后感
2015/06/16 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers