Помогите новичку с zii.widgets.CMenu

Поставил себе задачу сделать в главном меню возникновение class=‘active’ в активном пункте. Попробовал это реализовать таким способом:


  	<div id="mainmenu">

		<?php $this->widget('zii.widgets.CMenu',array(

			'items'=>array(

                                array('url'=>Yii::app()->getModule('user')->loginUrl, 'label'=>Yii::app()->getModule('user')->t("Login"), 'active' => Yii::app()->controller->getId() == 'login', 'visible'=>Yii::app()->user->isGuest),

                                array('url'=>Yii::app()->getModule('user')->registrationUrl, 'label'=>Yii::app()->getModule('user')->t("Register"), 'active' => Yii::app()->controller->getId() == 'registration', 'visible'=>Yii::app()->user->isGuest),

                                array('url'=>Yii::app()->getModule('user')->profileUrl, 'label'=>Yii::app()->getModule('user')->t("Profile"), 'active' => Yii::app()->controller->getId() == 'profile', 'visible'=>!Yii::app()->user->isGuest),

                                array('url'=>Yii::app()->getModule('user')->logoutUrl, 'label'=>Yii::app()->getModule('user')->t("Logout").' ('.Yii::app()->user->name.')', 'visible'=>!Yii::app()->user->isGuest),

                                array('url'=>array('/admin/poll'), 'label'=>Yii::t('main','Администрирование'), 'active' => Yii::app()->controller->getId() == 'poll', 'visible'=>Yii::app()->user->checkAccess('polladmin')),

                                array('url'=>array('/admin/result'), 'label'=>Yii::t('main','Расширенные результаты'), 'active' => Yii::app()->controller->getId() == 'result', 'visible'=>Yii::app()->user->checkAccess('resultreader')),

							array('label'=>'Опросы', 'url'=>array('/poll/index')),

							),

		)); ?>

      

	</div><!-- mainmenu -->

Задача решилось, но не полностью. Когда, находясь на третьем пункте ("администрирование"), пользователь нажимает на пятый ("опросы"),тогда на третьем пункте тоже сохраняется class="active". Как этого избежать?

Вот в html иллюстрация возникшей проблемы:


<ul id="yw1">

<li>

<li>

<li class="active">

<li>

<li class="active">

</ul>

Помогите, я вообще не программист, а веб дизайнер, но делаю сайты на разных CMS и фраймверках. В этом возникла такая проблема, кто выручит?

А чему у тебя равен


Yii::app()->controller->getId()

на странице администрирования и на странице опросов?

(выведи echo Yii::app()->controller->getId()."<br>")

По всей видимости admin - это модуль и в нем есть контроллер poll, получается что есть контроллер poll и в модуле админки и простой контроллер.

Поэтому когда вызван обычный контроллер poll, то срабатывает условие Yii::app()->controller->getId() == ‘poll’ для пункта админки.

Что бы такого не было, нужно условие


Yii::app()->controller->getId() == 'poll' && Yii::app()->getModule()->getName() == 'admin'

П.С. Лучше использовать метод Yii::app()->getController()->getId().

Спасибо, я уже использовал такой способ:


'active' => ((Yii::app()->controller->module->id == 'admin')and(Yii::app()->controller->getId() == 'poll'))

(Но я ваш способ запомню, может, тоже пригодится в будущем. Спасибо.)