Подключаем само расширение. Для этого копируем в папку /protected/extensions/ содержимое архива (архив смотим ниже в прикрепленных файлах).
Должна получиться такая структура:
Код: Выделить всё
/protected
/extensions
/nestedset
CNestedSetBehavior.php
NestedSetException.php
TreeBehavior.php
TreeException.php
TreeViewTreebehavior.php
Код: Выделить всё
public function behaviors(){
return array(
'TreeBehavior' => array(
'class' => 'application.extensions.nestedset.TreeBehavior',
'_idCol' => 'id',
'_lftCol' => 'lft',
'_rgtCol' => 'rgt',
'_lvlCol' => 'level',
),
'TreeViewTreebehavior' => array(
'class' => 'application.extensions.nestedset.TreeViewTreebehavior',
)
);
}
Код: Выделить всё
<?php
class Tree extends CWidget {
public function run() {
$model = Categories::model()->findByPK(1); // Здесь вместо Categories меняем на свою модель
$tree = $model->getTreeViewData(false);
$this->render('tree',array('tree'=>$tree,));
}
}
Код: Выделить всё
<?php
$this->widget('CTreeView', array(
'data'=>$tree, // передаем массив
'animated'=>'medium', // скорость анимации свертывания/развертывания
'collapsed'=>true, // если тру, то при генерации дерева, все его узлы будут свернуты
'persist'=>'location', // метод запоминания открытого узла
'unique'=>true, // если тру, то при открытии одного узла, будут закрываться остальные
'cssFile'=>'/css/treeview/jquery.treeview.css', // меняем расположение css файла (он немного подправлен мной)
));
?>
Код: Выделить всё
<?php $this->widget('application.components.Tree'); ?>
Код: Выделить всё
/css
/treeview
/img
treeview-modern.gif
jquery.treeview.css
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lft` int(11) NOT NULL,
`rgt` int(11) NOT NULL,
`level` int(11) NOT NULL,
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `lft` (`lft`),
KEY `rgt` (`rgt`),
KEY `level` (`level`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=104 ;
INSERT INTO `categories` (`id`, `lft`, `rgt`, `level`, `name`) VALUES
(1, 0, 1, 0, 'root');
Вот, что должно получиться в итоге: