Yii2: Создание своего виджета. Выделение активного пункта меню классом active

Нам нужно добавить класс active для ссылки пункта меню. Для этого создадим свой виджет MenuActive в папке components.

namespace app\components;

use yii\widgets\Menu;
use yii\helpers\ArrayHelper;
use yii\helpers\Url;
use yii\helpers\Html;

class MenuActive extends Menu
{
    public $linkTemplate = '<a {activeclass}="" href="{url}">{label}</a>';
    protected function renderItem($item)
    {
        if (isset($item['url'])) {
            $template = ArrayHelper::getValue($item, 'template', $this->linkTemplate);
            return strtr($template, [
                '{activeClass}'=> ($item['active']==1)? 'class="list-group-item active"':'class="list-group-item"',
                '{url}' => Html::encode(Url::to($item['url'])),
                '{label}' => $item['label'],
            ]);
        } else {
            $template = ArrayHelper::getValue($item, 'template', $this->labelTemplate);
            return strtr($template, [
                '{label}' => $item['label'],
            ]);
        }
    }
}

И теперь подключаем его вместо обычного виджета Menu

echo \app\components\MenuActive::widget([
'items' => [
['label' => 'Статьи',
'url' => ['/admin/blog/index'],
'template' => '<a href="{url}"><i class="lni lni-layers mr-2"></i> {label}</a>',
],

],
'itemOptions'=>['class'=>'myclass', 'style'=>'font-size = 12px;'],
]);
Источник: Перейти
Комментарии (0):
Чтобы оставить свой комментарий, необходимо пройти аутентификацию