用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' => '请选择父级分类']) ?>

最新文章

  1. angularJs 控制文本长度,超出省略号过滤器
  2. Android开发:在EditText中关闭软键盘 转来的
  3. NOIP2011 普及组 T3 洛谷P1309 瑞士轮
  4. $.toJSON的用法或把数组转换成json类型
  5. 工作中遇到的UIScrollview的问题及解决方案
  6. 关于Ubuntu的ssh免密登录
  7. [Swift]LeetCode806. 写字符串需要的行数 | Number of Lines To Write String
  8. linux 安装所有软件可以使用这个网站搜索RPM包
  9. JavaScript视频分享,学无止境。
  10. mysql 案例 ~ insert插入慢的场景
  11. pandas数据统计
  12. vue基础篇---路由的实现
  13. [SQL Server]从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值。
  14. Python 网络编程相关知识学习
  15. Macbook Pro上安装Windows 7虚机
  16. Linux汉化(Cent Os汉化)
  17. aspxgridview export导出数据,把true显示成‘是’
  18. 使用 Visual Studio 部署 .NET Core 应用 ——ASP.NET Core 发布的具体操作
  19. unity, UGUI Text outline
  20. javascript--自定义弹出登陆窗口(弹出窗)

热门文章

  1. SpringBoot:使用Jenkins自动部署SpringBoot项目(二)具体配置
  2. 获取url后的参数、获取a标签的参数
  3. 【译文】走出Java ClassLoader迷宫 Find a way out of the ClassLoader maze
  4. server computer (实验室移动服务器环境)
  5. Executors创建四种线程池
  6. SpringBoot处理异常方式
  7. Bootstrap table插件 被选中的行颜色改变
  8. JAVA中生成指定位数随机数的方法总结
  9. 【bat批处理】批量执行某个文件夹下的所有sql文件bat批处理
  10. ETF:现金替代标志