Добрый день!
Нужно сформировать меню категорий блога (тоесть список категорий в виде меню), если категория добавилась в блог - автоматом появился пункт в меню, без ручного участия
имеем:
Выбираем данные из базы:
$Criteria = new CDbCriteria;
$Criteria->select='*';
$Criteria->order='name';
$categories = Category::model()->findAll($Criteria);
Засовываем данные в массив(делаем это в контроллере, потому что CMenu не хочет воспринимать foreach внутри себя):
$arr = array ();
$arr[] = array('label'=>'Главная', 'url'=>array('/'));
foreach ($categories as $links) {
$item = array('label'=>$links->name, 'url'=>array('/c/'.$links->id));
$arr[] = $item;
}
$arr[] = array('label'=>'Вход', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest);
$arr[] = array('label'=>'Выход ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest);
Формируем данные для вида и рендерим их туда:
$dataProvider = new CArrayDataProvider($postArray);
$this->render('posts',array(
'dataProvider'=>$dataProvider,
'arr'=>$arr,
));
В виде формируем CMenu:
$this->widget(‘zii.widgets.CMenu’, array(
'items'=>array(
$arr,
)));
возвращает пустую строку
делаем <?=var_dump($arr)?>
и получаем:
array
0 =>
array
'label' => string 'Главная' (length=14)
'url' =>
array
0 => string '/' (length=1)
…
5 =>
array
'label' => string 'Выход (demo)' (length=17)
'url' =>
array
0 => string '/site/logout' (length=12)
'visible' => boolean true
собственно говоря всё что нужно в массив попало, не могу понять как заставить CMenu это съесть и отобразить в нужном мне виде