Задача: автоматически выделять активные пункты меню в зависимости от 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’, даже если используется действие по умолчанию.
