Дерево из базы

Есть таблица примерно такой структуры


id	Name	Parent_id

я думаю понятно, parent_id указывает на родительский id.

Нужно построить дерево, должна быть возможность развернуть/свернуть узлы, и добавить кнопки - типа как в CGridView.

Что бы можно было к каждому элементу дерева подключить какие-то действия через ajax.

Чем и главное Как лучше сделать это на yii?

Спасибо!

Подобная тема

Да не совсем, мне больше подходит CTreeView, если бы еще кто показал, как динамически подгружать данные, вообще было бы здорово :)

рекурсия)

:)

Собственно, примерно к такому варианту я и склонился, просто думал может есть какие-нибудь методы типа Insert и т.п., хотя в мануале не видно.

Или может можно как-то к CArrayDataProvider привязать?

Вот проверенное лично решение без рекурсии:


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();

	}

}

Правда в этом примере данные подгружаются все сразу. Для меню или категорий-подкатегорий в самый раз.

Если же данных много (например комментарии вводить) то пришлось использовать рекурсию.