Помогите разобраться плиз, возможно вопрос скорее по PHP.
загоняю ID Titile в массив так,
$id_num[1] = array($model->id, $model->title);
как достать $model->title отсюда на вывод?
echo ?..
Заранее спасибо
Помогите разобраться плиз, возможно вопрос скорее по 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|
Как сделать средствами фреймворка - не знаю поэтому решил тут структурно по странике подойти.
Если подскажете какой нибудь более простой путь решения проблемы буду очень признателен.
А пока план такой:
Считываем все из базы в 2 разных массива ID и PID
Выполняем алгоритм рекурсии только не из базы а по массивам (тоесть строим дерево)
формируем вот этот массив данных для виджета
выводим меню
Может как то проще можно? Может уже фреймворк умеет как-то проще делать? Я новичек, подскажите плиз
Немного помучавшись, вот что у меня получилось.
Код разместить я разместил во "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));
?>
Извините что без подробных комментариев, думаю и так все понятно.