Стандартного решения я не нашел, поэтому пришлось немного расширить виджет. Вот что получилось:
Menu.php:
Код: Выделить всё
Yii::import('zii.widgets.CMenu');
class Menu extends CMenu
{
protected function isItemActive($item,$route)
{
if (isset($item['syn']))
foreach ($item['syn'] as $syn)
if (!strcasecmp(trim($syn,'/'),$route))
return true;
return parent::isItemActive($item,$route);
}
}
Код: Выделить всё
$this->widget('Menu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('/site/index')),
array('label'=>'Users', 'url'=>array('/user/index'), 'visible'=>!Yii::app()->user->isGuest, 'syn'=>array('user/create','user/admin','user/update','user/view')),
array('label'=>'Registration', 'url'=>array('/user/registration'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Login', 'url'=>array('/user/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout'.' ('.Yii::app()->user->name.')', 'url'=>array('/user/logout'), 'visible'=>!Yii::app()->user->isGuest),
),
));
Надеюсь, эта тема кому-нибудь поможет.