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查询搜索引擎排名位置的代码
Jan 05 PHP
PHP IPV6正则表达式验证代码
Feb 16 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
php实现websocket实时消息推送
Mar 30 PHP
PHP自动识别当前使用移动终端
May 21 PHP
PHP getName()函数讲解
Feb 03 PHP
PHP CURL实现模拟登陆并上传文件操作示例
Jan 02 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
PHP4之COOKIE支持详解
2006/10/09 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
pandas数据处理进阶详解
2019/10/11 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
大专自我鉴定范文
2013/10/01 职场文书
人力资源部培训专员岗位职责
2014/01/02 职场文书
会计求职自荐信
2014/06/20 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
2014年小学教学工作总结
2014/11/13 职场文书