Nav (виджет меню) вопрос по class="active"

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

Nav (виджет меню) вопрос по class="active"

Сообщение Introvert »

Здравствуйте, юзаю стандартный виджет верхнего меню как в примере yii2. Проблема в том, что я сделал некоторые ссылки вида ['/post/index', 'type' => 'open'] с передачей type, ссылка: сайт/post/index.html?type=open
И класс активного меню class="active" добавляется к ссылке неправильно, думает что /post/index везде, получается он добавляется к /post/index.html и к /post/index.html?type=open

Как заставить добавлять active только к странице open если она открыта, а то открываю её и "Все заявки" тоже активно.
Последний раз редактировалось Introvert 2017.08.12, 18:46, всего редактировалось 1 раз.
Пишу социальную сеть заявок для фирм.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Nav (виджет меню) вопрос по class="active"

Сообщение Nerf »

active => Yii::$app->controller->action->uniqueId == 'xxx' && Yii::$app->controller->actionParams['type'] === 'yyy'
И подобные вариации. + проверить на существование Yii::$app->controller->actionParams[xxx]
Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

Re: Nav (виджет меню) вопрос по class="active"

Сообщение Introvert »

Nerf писал(а): 2017.08.10, 18:03 active => Yii::$app->controller->action->uniqueId == 'xxx' && Yii::$app->controller->actionParams['type'] === 'yyy'
И подобные вариации. + проверить на существование Yii::$app->controller->actionParams[xxx]
Так actionParams['type'] = 'open' - получаю тоже, что и на скрине+всегда нажата, а actionParams['type'] === 'open' - active класс тогда не добавляет к открытым, actionParams['type'] !== 'open' - получаю тоже, что и на скрине+всегда нажата.

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

Yii::$app->user->isGuest ? ('') : (['label' => '<center><span class="glyphicon glyphicon-align-justify" aria-hidden="true"></span></center><span class="top_menu_text">Открытые</span>', 'url' => ['/post/index', 'type' => 'open'], 'active' => Yii::$app->controller->action->uniqueId == 'post/index' && Yii::$app->controller->actionParams['type'] = 'open']),
Yii::$app->user->isGuest ? ('') : (['label' => '<center><span class="glyphicon glyphicon-book" aria-hidden="true"></span></center><span class="top_menu_text">Все заявки</span>', 'url' => ['/post/index']]),
Голову ломаю в чем проблема, если указать для всех заявок:

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

Yii::$app->user->isGuest ? ('') : (['label' => '<center><span class="glyphicon glyphicon-book" aria-hidden="true"></span></center><span class="top_menu_text">Все заявки</span>', 'url' => ['/post/index', 'type' => false]]),
Тогда да, но просто добавили тайпу ноль, (false выводит ноль, если null проблема опять та же)
Пишу социальную сеть заявок для фирм.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Nav (виджет меню) вопрос по class="active"

Сообщение Nerf »

Попробуйте вывести Yii::$app->controller->action->uniqueId и Yii::$app->controller->actionParams на странице и посмотреть, какие значения они принимают. В любом случае способ 100% рабочий, проверьте Yii::$app->request->get('type') === 'open'. actionParams не будет содержать type, если в экшене он не прописан явно как параметр (public function actionIndex($type = null)).
Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

Re: Nav (виджет меню) вопрос по class="active"

Сообщение Introvert »

Nerf писал(а): 2017.08.15, 20:15 Попробуйте вывести Yii::$app->controller->action->uniqueId и Yii::$app->controller->actionParams на странице и посмотреть, какие значения они принимают. В любом случае способ 100% рабочий, проверьте Yii::$app->request->get('type') === 'open'. actionParams не будет содержать type, если в экшене он не прописан явно как параметр (public function actionIndex($type = null)).
Yii::$app->request->get('type') === 'open' единицу выводит, на остальных страницах ничего. ($type = null) не прописан в action. Yii::$app->controller->action->uniqueId выводит на всех страницах post/index, debug(Yii::$app->controller->actionParams['type'] === 'open'); - не выводит ничего, debug(Yii::$app->controller->actionParams); - пустой массив.
Пишу социальную сеть заявок для фирм.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Nav (виджет меню) вопрос по class="active"

Сообщение Nerf »

Introvert писал(а): 2017.08.17, 12:24
Nerf писал(а): 2017.08.15, 20:15 Попробуйте вывести Yii::$app->controller->action->uniqueId и Yii::$app->controller->actionParams на странице и посмотреть, какие значения они принимают. В любом случае способ 100% рабочий, проверьте Yii::$app->request->get('type') === 'open'. actionParams не будет содержать type, если в экшене он не прописан явно как параметр (public function actionIndex($type = null)).
Yii::$app->request->get('type') === 'open' единицу выводит, на остальных страницах ничего. ($type = null) не прописан в action. Yii::$app->controller->action->uniqueId выводит на всех страницах post/index, debug(Yii::$app->controller->actionParams['type'] === 'open'); - не выводит ничего, debug(Yii::$app->controller->actionParams); - пустой массив.
Ну, т.е. у вас есть все необходимое.
Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

Re: Nav (виджет меню) вопрос по class="active"

Сообщение Introvert »

Ну, т.е. у вас есть все необходимое.
Можно видео? Пусть и без звука, ничего не пойму, все ж правильно сделал
Пишу социальную сеть заявок для фирм.
Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

Re: Nav (виджет меню) вопрос по class="active"

Сообщение Introvert »

Yii::$app->controller->action->uniqueId == 'post/index' - выводит 1
Yii::$app->controller->actionParams['type'] === 'open' - ничего не выводит.
Yii::$app->controller->actionParams['type'] !== 'open' - выводит 1
Может я суть не понял?
Пишу социальную сеть заявок для фирм.
Ответить