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 ...
随机推荐
- CentOS 下如何查看并清理系统内存空间
有时候在服务器上打开了很多会占用内存的程序但关闭这些程序后,发现内存空间还是和没有关闭应用程序时的占用一样,以致使其它应用程序打开时内存不够或很卡,那么此时就想清理掉以前的程序打开时所占用的内存.而大 ...
- 【Delphi】注册快捷键
ShortCutToText , TextToShortCut 需 uses Menus; type TForm1 = class(TForm) HotKey1: THotKey; Button1: ...
- 清空FORM表单的几种方式 Reset 重加载
1. form中定义name <form name = "sbform" action="sb_add.php" method="post&qu ...
- System.Transaction (TransactionScope) 与 可提升 (Promotable) 交易
这是我的备份,原文请看 http://www.dotblogs.com.tw/mis2000lab/archive/2014/11/12/transactionscope_promotable_tr ...
- C#高级功能(四)扩展方法和索引
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.扩展方法被定义为静态方法,但 ...
- Learning Scrapy笔记(七)- Scrapy根据Excel文件运行多个爬虫
摘要:根据Excel文件配置运行多个爬虫 很多时候,我们都需要为每一个单独的网站编写一个爬虫,但有一些情况是你要爬取的几个网站的唯一不同之处在于Xpath表达式不同,此时要分别为每一个网站编写一个爬虫 ...
- [terry笔记]RMAN综合学习之配置
[terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...
- Github上LeakCanary编译报错CreateProcess error=2的解决方法
现象说明: 从github上拉下LeakCanary编译时报错 CreateProcess error=2, ϵͳÕҲ»µ½ָ¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd ...
- Jquer的三种初始化方式
$(document).ready(function(){ alert(200); }); jQuery(function($){ alert(100); }); $(function(){ aler ...
- 2 通过JNI混合使用Java和C++ -----> 访问数组
关于c和cpp实现native方法的一些注释: 1> 在jni.h中首先定义了C的实现方式,然后用内联函数实现了Cpp的实现方式,如下所示: const char* GetStringUTFC ...