Yii - Css - один активный эффект для нескольких ссылок

0

У меня есть панель главного меню, элементы: Emlpoyees, Work, Search... (Моя сила проекта Yii)

<div id="mainmenu">
    <?php $this->widget('zii.widgets.CMenu',array(
        'items'=>array(
            array('label'=>Yii::t('app','Home'), 'url'=>array('/site/index')),
            array('label'=>Yii::t('app','Employees'), 'url'=>array('/hr/index')),
            array('label'=>Yii::t('app','Work'), 'url'=>array('/work/index')),
            array('label'=>Yii::t('app','About'), 'url'=>array('/site/page', 'view'=>'about')),
            array('label'=>Yii::t('app','Contact'), 'url'=>array('/site/contact')),

            array('label'=>Yii::t('app','Search'), 'url'=>array('/hr/search')),
            array('label'=>Yii::t('app','User Access'), 'url'=>array('/rights'), 'visible'=>Yii::app()->user->name==='admin'),
            array('label'=>Yii::t('app','Manager User'), 'url'=>array('/user'), 'visible'=>Yii::app()->user->name==='admin'),
            array('label'=>Yii::t('app','Login'), 'url'=>array('/user/login'),'visible'=>Yii::app()->user->isGuest),
            array('label'=>Yii::t('app','Logout').' ('.Yii::app()->user->name.')', 'url'=>array('/user/logout'), 'visible'=>!Yii::app()->user->isGuest),
    ))); ?>

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

Yii установил "активный" на нем, он работает, когда я перехожу к ссылке, например: index.php? R = hr/index, "Hr" будет активен (измените фоновый цвет).

 #mainmenu ul li a:hover, #mainmenu ul li.active a
    {
       color: #FF6633;
       background-color:#fff;   
       border-radius: 10px 0px 0px 0px;
    }

Но я хочу, чтобы фоновый цвет в "Hr" менялся, когда я перехожу к ссылке index.php? R = hr/create, index.php? R = hr/manager,... Помогите мне пожалуйста! (Извини я плохо знаю английский :( )

Теги:
yii

1 ответ

0
Лучший ответ

Элементы CMenu также имеют active поле (логическое), которое определяет, какие пункты меню должны отображаться как активные. (Имейте соответствующий класс CSS.)

По умолчанию это active поле оценивается как true, когда и текущий контроллер и действие совпадают, но вы можете легко переопределить это с помощью специального выражения, чтобы рассматривать только текущий контроллер:

<div id="mainmenu">
    <?php $this->widget('zii.widgets.CMenu',array(
        'items'=>array(
            array('label'=>Yii::t('app','Home'), 'url'=>array('/site/index')),
            array('label'=>Yii::t('app','Employees'), 'url'=>array('/hr/index'),
                  'active'=>Yii::app()->controller->id=='hr'),
            array('label'=>Yii::t('app','Work'), 'url'=>array('/work/index')),
            array('label'=>Yii::t('app','About'), 'url'=>array('/site/page', 'view'=>'about')),
            array('label'=>Yii::t('app','Contact'), 'url'=>array('/site/contact')),

            array('label'=>Yii::t('app','Search'), 'url'=>array('/hr/search')),
            array('label'=>Yii::t('app','User Access'), 'url'=>array('/rights'), 'visible'=>Yii::app()->user->name==='admin'),
            array('label'=>Yii::t('app','Manager User'), 'url'=>array('/user'), 'visible'=>Yii::app()->user->name==='admin'),
            array('label'=>Yii::t('app','Login'), 'url'=>array('/user/login'),'visible'=>Yii::app()->user->isGuest),
            array('label'=>Yii::t('app','Logout').' ('.Yii::app()->user->name.')', 'url'=>array('/user/logout'), 'visible'=>!Yii::app()->user->isGuest),
    ))); ?>

</div><!-- mainmenu -->
  • 0
    Спасибо за ваш ответ, это хорошо. Теперь вы не можете помочь мне решить эту проблему: - «Поиск» (ссылка hr / search) имеет контроллер-> id == hr, поэтому «Сотрудники» был активен. - «Пользовательский доступ» и «Менеджер пользователя» - это «права» и «пользовательские» расширения, это 2 модуля, и в этом случае это не работает.
  • 0
    @ ÂuZu вы можете получить id текущего активного модуля через Yii::app()->controller->module->id
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню