Задача: автоматически выделять активные пункты меню в зависимости от url страницы, при переходе между страницами соответствующий пункт меню должен становиться активным (добавляется класс active или open).
Решение:
В представлении
<?= Menu::widget([
'options' => ['class' => 'menu-links'],
'items' => [
['label' => 'Главная', 'url' => ['site/index']],
['label' => 'О сайте', 'url' => ['site/about']],
['label' => 'Каталог', 'url' => ['catalog/index']],
['label' => 'Войти', 'url' => ['site/login'], 'visible' => Yii::$app->user->isGuest],
],
'activeCssClass' => 'active',
]);
?>
В конфиге можно указать правила:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'about' => 'site/about',
'login' => 'site/login',
'catalog' => 'catalog/index',
],
],
],
Тогда ссылки будут иметь красивый сокращенный вид.
На выходе будет построен ul > li список ссылок (меню). И если текущая страница будет совпадать с указанным в url значением, то пункт меню будет выделен активным (задан классом activeCssClass).
Важно: необходимо указывать URL вида
'контроллер/действие',
а не в сокращенной форме ‘/catalog’, даже если используется действие по умолчанию.
