Снова про CTreeView помогите плиз

Помогите разобраться плиз, возможно вопрос скорее по PHP.

загоняю ID Titile в массив так,

$id_num[1] = array($model->id, $model->title);

как достать $model->title отсюда на вывод?

echo ?..

Заранее спасибо




echo $id_num[1][1];



Вот только не понимаю смысл…

Ну вот пытаюсь сформировать такой массив:

$my_data = array(

array(


    'text'     => 'Node 1',


    'expanded' => true,


        'children' => array(


             array(


                'text'     => 'Node 1.1',


             ),   


             array(


                'text'     => 'Node 1.2',


             ),   


             array(


                'text'     => 'Node 1.3',


             ),             


        )


),

);

На основании данных |ID|PID|TITLE|

Как сделать средствами фреймворка - не знаю поэтому решил тут структурно по странике подойти.

Если подскажете какой нибудь более простой путь решения проблемы буду очень признателен.

А пока план такой:

  1. Считываем все из базы в 2 разных массива ID и PID

  2. Выполняем алгоритм рекурсии только не из базы а по массивам (тоесть строим дерево)

  3. формируем вот этот массив данных для виджета

  4. выводим меню

Может как то проще можно? Может уже фреймворк умеет как-то проще делать? Я новичек, подскажите плиз

Немного помучавшись, вот что у меня получилось.

Код разместить я разместил во "views\menu"

Скорее всего это неправильно, но не судите строго - я начинающий и может быть этот код комунить пригодится

…тут создаем массив всего менью где |ID|PId|Title| - соответственно, вместо Title в моем примере ссылка на страничку show…


<?php

$count=0;

foreach($models as $n=>$model):

$data_item[$count] = array($model->id, $model->pid, CHtml::link($model->title,array('show','id'=>$model->id)));

$count++;

endforeach;

$count--;

… вот функция самой рекурсии построения массива данных необходимого для использования нашего стандартного виджета CTreeView …


function getChildren($pid,$count,$data_item)

{

	$i = 0;

	while ($i<=$count)

		{

		if ($data_item[$i][1] == $pid)

				{

				$parent_item[$i] = array('text'=>$data_item[$i][2],'expanded'=>true,'children' => getChildren($data_item[$i][0],$count,$data_item));

				} else  {$parent_item[$i] = NULL;}

		$i++;

		}

	return ($parent_item);

}

$my_data = getChildren(0,$count,$data_item);

…вывод самого виджета…


$this->widget('CTreeView', array('data' => $my_data));

?>

Извините что без подробных комментариев, думаю и так все понятно.