В моем классе Controller (AdminController extends Controller
) есть несколько функций «меню». Каждый из них создает массив, необходимый для CMenu , и я устанавливаю активный на основе того, что передал функции. Например:
protected function getAdminMenu($activeTitle) {
return array(
array('label'=>'Manage pages', 'url'=>array('/user/purchase'),'active'=>($activeTitle=='Manage pages')?true:false),
array('label'=>'Manage users', 'url'=>array('/user/index'),'active'=>($activeTitle=='Manage users')?true:false),
);
}
Вы можете сделать это там, где он выглядит как запрос контроллера или действия или URL-адреса, и также активирует соответствующий пункт меню. Это всего лишь пример.
Затем, на мой взгляд, если я хочу сделать меню активным «Управление страницами», я устанавливаю Меню моего макета, используя функцию из моего класса Controller:
$this->menu=$this->getAdminMenu('Manage pages');
(Это предполагает, что у вас есть public $menu=array();
, объявленный в вашем контроллере, а также. Посмотрите на пример блога, чтобы увидеть, как это работает:
$this->widget('zii.widgets.CMenu', array(
'items'=>$this->menu,
));
)
Надеюсь, это даст вам какое-то направление!