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 setcookie() cannot modify header information 的解决方法
Jan 09 PHP
PHP 图像尺寸调整代码
May 26 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 PHP
PHP的PDO连接讲解
Jan 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
php-fpm添加service服务的例子
2018/04/27 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
页面使用密码保护代码
2013/04/10 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python装饰器初探(推荐)
2016/07/21 Python
Python+Wordpress制作小说站
2017/04/14 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
python输出数学符号实例
2020/05/11 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
员工年终演讲稿
2014/01/03 职场文书
《月迹》教学反思
2014/02/19 职场文书
教学改革实施方案
2014/03/31 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
和解协议书
2014/04/16 职场文书
施工单位安全责任书
2014/07/24 职场文书
项目申请汇报材料
2014/08/16 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
社区好人好事材料
2014/12/26 职场文书
工作能力自我评价2015
2015/03/05 职场文书
学校国庆节活动总结
2015/03/23 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python