yii无限极分类
/** * 获取菜单Tree * * @return multitype: */ public function getMenuAllList() { $resArr = $this->getTreeChilds ( 0 ); $arr = array (); $arr [0] = "作为一级菜单"; foreach ( $resArr as $rs ) { $id = $rs ['id']; $text = $rs ['text']; $arr [$id] = $text; } return $arr; //return $resArr = CHtml::listData ( $arr, 'id', 'text'); } public function getTreeChilds($parentid) { $icon = array ( '├─ ', '├─ ', '└─ ' ); $rs = Menu::model ()->findAll ( "parentid=:parentid", array ( 'parentid' => $parentid ) ); $returnArr = array (); if (count ( $rs ) > 0) { for($i = 0; $i < count ( $rs ); $i ++) { if ($parentid > 0) { $strnbsp = str_repeat ( ' ', $rs [$i] ['level'] ); if (count($rs)==1) { $strnbsp .= $icon [2]; }else{ if ($i == 0) { $strnbsp .= $icon [0]; } elseif ($i == count ( $rs ) - 1) { $strnbsp .= $icon [2]; } else { $strnbsp .= $icon [1]; } } $returnArr [Menu::$ii] ['id'] = $rs [$i] ['id']; $returnArr [Menu::$ii] ['text'] = $strnbsp. $rs [$i] ['text']; } else { $returnArr [Menu::$ii] ['id'] = $rs [$i] ['id']; $returnArr [Menu::$ii] ['text'] = $rs [$i] ['text']; } $childArr = $this->getTreeChilds ( $rs [$i] ['id'] ); if (count ( $childArr ) > 0) { foreach ( $childArr as $child ) { array_push ( $returnArr, $child ); } } Menu::$ii ++; } } return $returnArr; } public function beforeSave() { if (parent::beforeSave ()) { if ($this->isNewRecord) { $this->create_time = time (); } // 更改菜单层次 if ($this->parentid == 0) { $this->level = 0; } else { $this->level = $this->parentid; } return true; } else { return false; } }
<div class="row"> <?php echo $form->labelEx($model,'parentid'); ?> <?php echo $form->dropDownList($model,'parentid',Menu::model()->getMenuAllList(),array('encode'=>false)); ?> <?php echo $form->error($model,'parentid'); ?> </div>
db:
* @property integer $id
* @property integer $parentid
* @property string $text
* @property string $alias_name
* @property string $icon_cls
* @property integer $issort
* @property string $href
* @property string $level
* @property integer $create_time
yii无限极分类的更多相关文章
- yii框架无限极分类的做法
用yii框架做了一个无限极分类,主要的数组转换都是粘贴的别人的代码,但还是不要脸的写出来,方便以后自己看 用的是递归,不是path路径 控制器: protected function subtree( ...
- php无限极分类以及递归(thinkphp)
php无限极分类: 无限极分类重点在于表的设计: 1在model中: class CatModel extends Model{ protected $cat = array(); public fu ...
- js实现无限极分类
转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制
在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...
- PHP无限极分类
当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱, ...
- PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂
当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一 ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现
今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...
- 谈一次php无限极分类的案例
作者:白狼 出处:http://www.manks.top/php_tree_deep.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 ...
- PHP无限极分类生成树方法,无限分级
你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...
随机推荐
- 【C++】快排
假设要排序的数据类型为int int main() { qsort(a,len,sizeof(int),cmp); //qsort(数组的起始位置,排序个数,类型大小,比较函数); } int cmp ...
- 学习simple.data之进阶篇
一.结果排序 -OrderBy(升序) -OrderByDescending(降序) db.Product.All().OrderByFactoryName(); db.Product.All().O ...
- Oracle 错误代码
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...
- Android---WebView显示Html乱码问题
webView.loadData(result,"text/html","UTF-8"); 反正是用上面的方法无法解决乱码的问题. 使用下面的方法就能完美解决了 ...
- 开发移动app与服务器端session的状态管理与交互
我们进行web开发的时候,一般使用cookie或session来保存用户的登录状态,通过检查cookie或session的数据来验证用户是否具有对某些需要登录的页面的访问权限,这一切都是通过浏览器来完 ...
- jQuery无缝滚动插件
插件代码 ;(function ($) { // jQuery marquee 插件 $.fn.marquee = function (options) { // 默认设置 var defaults ...
- 集成友盟分享SDK报错
删除4.2.1版本的reference换成4.3版本运行报错 解决办法:要将4.2.1版本的全部库文件物理删除,不要只删除reference.
- 浅谈dynamic的简单使用用法
今天看了博客园里面的dynamic用法,我犹豫从来没接触过,今天恶补了一下,把我对dynamic的认识分享了出来,大家一起学习. Visual C# 2010 引入了一个新类型 dynamic. 该类 ...
- Zybo智能小车识别图像中的文字
智能小车识别图像中的文字 [TOC] 运行平台 这次的内容是基于Xilinx公司的Zybo开发板以及其配套的Zrobot套件开发 Zybo上面的sd卡搭载了Ubuntu12.04LTS的linux版本 ...
- 自定义 tabBar (默认 tabBar 为可读不可写类型)
KVC 方法 //由于 tabBar是只读 不能够直接操作,如果要修改 可以使用KVC let mainTabBar = MainTabBar() //KVC 赋值 setValue(mainTab ...