Подсветка меню при роутинге

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
ykyk
Сообщения: 40
Зарегистрирован: 2013.05.22, 17:00
Откуда: Сочи

Подсветка меню при роутинге

Сообщение ykyk »

Добрый день.

В сайте "из коробки" добавил следующие пункты меню

Код: Выделить всё

   ['label' => 'Гарантии', 'url' => ['page/garantii']],
   ['label' => 'Контакты', 'url' => ['page/adress']],


Обрабатывается все контоллером SiteController.
Чтобы исключить из url "site" , добавил в конфиг правило:

Код: Выделить всё

'page/<name_eng>' => 'site/page',
Все работает, но не работает подсветка выбранного меню.

В описании сказано, что подсветка автоматически сработает если url в виджете будет совпадать с url в адресной строке. Совпадает, но не работает. Класс 'active' прописан, на остальных пунктах меню, что из поставки, подсветка работает.

Думаю что "собака зарыта" как раз в роутинге
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Подсветка меню при роутинге

Сообщение ElisDN »

Так вы роутинг и не используете

Код: Выделить всё

['label' => 'Гарантии', 'url' => ['site/page', 'name_eng'=>'garantii']],
['label' => 'Контакты', 'url' => ['site/page', 'name_eng'=>'address']], 
Аватара пользователя
ykyk
Сообщения: 40
Зарегистрирован: 2013.05.22, 17:00
Откуда: Сочи

Re: Подсветка меню при роутинге

Сообщение ykyk »

Да, так работает, но в этом случае url выдает http://mysite.ru/site/page/name_eng/garantii

А мне нужен url - http://mysite.ru/page/garantii

Для Seo нужны адреса покороче, да и в нужном формате ссылки уже проиндексированы в Гугле и Яндексе.
SergV
Сообщения: 192
Зарегистрирован: 2012.07.08, 11:27

Re: Подсветка меню при роутинге

Сообщение SergV »

В описании сказано, что подсветка автоматически сработает если url в виджете будет совпадать с url в адресной строке. Совпадает, но не работает. Класс 'active' прописан, на остальных пунктах меню, что из поставки, подсветка работает.
Я с этим тоже по началу столкнулся, мало того что не всегда работало в модулях, так ещё и если работало то подсвечивало несколько пунктов одновременно. В конце концов я пошёл может не совсем правильным путём, но зато работает, и притом нормально. Делаю так:
...
'active' => (Yii::app()->controller->id === 'blog' and Yii::app()->controller->action->id === 'index'),
...
То есть проверяю конкретно по контролеру и экшену(если надо то и по виду). В любом случае к ройтингу тут привязки нет, он может быть прописан как нужно, так как проверяется не по нему.
Аватара пользователя
ykyk
Сообщения: 40
Зарегистрирован: 2013.05.22, 17:00
Откуда: Сочи

Re: Подсветка меню при роутинге

Сообщение ykyk »

SergV писал(а): 'active' => (Yii::app()->controller->id === 'blog' and Yii::app()->controller->action->id === 'index'),
То есть проверяю конкретно по контролеру и экшену(если надо то и по виду). В любом случае к ройтингу тут привязки нет, он может быть прописан как нужно, так как проверяется не по нему.
Заработало. Спасибо!
Аватара пользователя
ykyk
Сообщения: 40
Зарегистрирован: 2013.05.22, 17:00
Откуда: Сочи

Re: Подсветка меню при роутинге

Сообщение ykyk »

Заработало. Но что делать когда и контроллер и action одинаковы? Как достучаться до значения параметра name_eng?

Код: Выделить всё

['label' => 'Гарантии', 'url' => ['page/garantii'],
'active' => (Yii::app()->controller->id === 'site' and Yii::app()->controller->action->id === 'page')], // Как получить значение garantii?

['label' => 'Контакты', 'url' => ['page/adress'], 
'active' => (Yii::app()->controller->id === 'site' and Yii::app()->controller->action->id === 'page')], // А здесь adress...
 
Аватара пользователя
ykyk
Сообщения: 40
Зарегистрирован: 2013.05.22, 17:00
Откуда: Сочи

Re: Подсветка меню при роутинге

Сообщение ykyk »

Вот так решил это.

Код: Выделить всё

['label' => 'Гарантии', 'url' => ['page/garantii'],
'active' => (Yii::app()->controller->id === 'site' and Yii::app()->controller->action->id === 'page' and $_GET['name_eng'] ==='garantii')],

['label' => 'Контакты', 'url' => ['page/adress'],
'active' => (Yii::app()->controller->id === 'site' and Yii::app()->controller->action->id === 'page' and $_GET['name_eng'] ==='adress')], 
Rus
Сообщения: 6
Зарегистрирован: 2014.02.07, 16:11

Re: Подсветка меню при роутинге

Сообщение Rus »

ykyk, спасибо Вам большое. У меня была та же проблема. Вы мне очень помогли.
Ответить