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网站提速三大“软”招
Oct 09 PHP
一个更简单的无限级分类菜单代码
Jan 16 PHP
wordpress之wp-settings.php
Aug 17 PHP
php入门学习知识点一 PHP与MYSql连接与查询
Jul 14 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
自己写了一个php检测文件编码的函数
Apr 21 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
PHP的介绍以及优势详细分析
Sep 05 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定时自动生成静态HTML的实现代码
2010/06/20 PHP
php实现aes加密类分享
2014/02/16 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
JavaScript之编码规范 推荐
2012/05/23 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
Python实现求两个csv文件交集的方法
2017/09/06 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
授权委托书范本
2014/04/03 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
市场策划求职信
2014/08/07 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
新员工考核评语
2014/12/31 职场文书
心术观后感
2015/06/11 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
python 如何在list中找Topk的数值和索引
2021/05/20 Python
Log4j.properties配置及其使用
2021/08/02 Java/Android