kolossus
(Mbook)
1
Есть таблица примерно такой структуры
id Name Parent_id
я думаю понятно, parent_id указывает на родительский id.
Нужно построить дерево, должна быть возможность развернуть/свернуть узлы, и добавить кнопки - типа как в CGridView.
Что бы можно было к каждому элементу дерева подключить какие-то действия через ajax.
Чем и главное Как лучше сделать это на yii?
Спасибо!
kolossus
(Mbook)
3
Да не совсем, мне больше подходит CTreeView, если бы еще кто показал, как динамически подгружать данные, вообще было бы здорово 
kolossus
(Mbook)
5

Собственно, примерно к такому варианту я и склонился, просто думал может есть какие-нибудь методы типа Insert и т.п., хотя в мануале не видно.
Или может можно как-то к CArrayDataProvider привязать?
Yuri_33
(Yuri!)
6
Вот проверенное лично решение без рекурсии:
Yii::import('zii.widgets.CMenu');
class MainMenu extends CMenu
{
public function init()
{
$items=array(0=>array('id'=>0, 'parent_id'=>0));
$temp=array(0=>&$items[0]);
foreach(MenuTree::model()->findAll(array('order'=>'parent_id, id')) as $item)
{
$parent = &$temp[$item->parent_id];
if (!isset($parent['items'])) { $parent['items'] = array(); }
$parent['items'][$item->id] = array('id'=>$item->id,
'parent_id'=>$item->parent_id,
'label'=>$item->title,
'url'=> Yii::app()->createUrl($item->url));
$temp[$item->id] = &$parent['items'][$item->id];
}
$this->items = $items[0]['items'];
parent::init();
}
}
Правда в этом примере данные подгружаются все сразу. Для меню или категорий-подкатегорий в самый раз.
Если же данных много (например комментарии вводить) то пришлось использовать рекурсию.