yii nestedsetbehavior - получение всех элементов (узлов) всех деревьев
Primary tabs
получить массив всех узлов (окажется в $nodes) можно выполнив такой запрос:
$criteria=new CDbCriteria; $criteria->order = 't.root, t.lft' ; // or 't.root, t.lft' for multiple trees (для многих деревьев) $nodes = ForumCategory::model()->findAll($criteria);
после чего обойдя массив иерархию можно отобразить используя свойство level очередного элемента -
дочерние элементы - всегда следуют за родительским и их значение level всегда больше родительского
в документации для вывода всех элементов на экран предлагается такой код:
$criteria=new CDbCriteria; $criteria->order='t.lft'; // or 't.root, t.lft' for multiple trees $categories=Category::model()->findAll($criteria); $level=0; foreach($categories as $n=>$category) { if($category->level==$level) echo CHtml::closeTag('li')."\n"; else if($category->level>$level) echo CHtml::openTag('ul')."\n"; else { echo CHtml::closeTag('li')."\n"; for($i=$level-$category->level;$i;$i--) { echo CHtml::closeTag('ul')."\n"; echo CHtml::closeTag('li')."\n"; } } echo CHtml::openTag('li'); echo CHtml::encode($category->title); $level=$category->level; } for($i=$level;$i;$i--) { echo CHtml::closeTag('li')."\n"; echo CHtml::closeTag('ul')."\n"; }
- Log in to post comments
- 2624 reads