Реализация «выбранных» ссылок меню в Yii - PullRequest
1 голос
/ 28 марта 2011

У меня есть два шаблона для интеграции в yii - мой интерфейсный сайт и моя CMS.

  1. Мой интерфейсный сайт имеет главное меню, которое генерируется CMS (база данных)

  2. Главное меню CMS, которое является статическим меню от меня.(«Управление страницами», «Управление пользователями», «Управление продуктами»), хотя это меню статично, я все еще хочу назначить выбранный класс соответствующему элементу верхнего меню.

Например:Если я управляю некоторыми страницами на сайте, ссылка «Управление страницами» должна быть выделена и выделена.Как бы я пошел по этому поводу?Что-то мне нужно самому написать код или в yii есть функция, на которую мне нужно сослаться?

Заранее спасибо Yii newbie

Ответы [ 2 ]

1 голос
/ 28 марта 2011

В моем классе 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,
    ));

)

Надеюсь, это даст вам какое-то направление!

0 голосов
/ 28 марта 2011

Создайте класс css, который изменяет фон объекта, чтобы выделить его.

В ваших представлениях для различных страниц просто сделайте, чтобы пункт меню имел этот конкретный класс.

...