Задать вопрос

Как добавить уникальный id в подменю виджета menu в yii2?

Здравствуйте, делаю меню с помощью yii\widgets\Menu. Я использую коллапс от бутстрапа. В коллапсе нужно указать id для подменю, которое будет появляться/исчезать. Не могу понять как сделать уникальный id для всех подменю. В интернете нашёл только
'submenuTemplate' => "\n<ul id='sidebar1'>\n{items}\n</ul>\n"
Мне это не подходит, потому что задается 1 id для всех подменю. Помогите найти решение. Выложу мой код, вдруг вам понадобится
<?php echo Menu::widget([
                        'items' => [
                            [
                                'label' => 'Пользователи',
                                'options' => [
                                    'data-toggle' => 'collapse',
                                    'data-target' => '#sidebar1',
                                    'class' => 'dropdown'
                                ],
                                'items' => [
                                    [
                                        'label' => 'Основное',
                                        'url' => ['/admin/user'],
                                        'active' => Yii::$app->controller->id == 'user',
                                    ],
                                
                                ]
                            ],
                            [
                                'label' => 'Тестовый пункт',
                                'options' => [
                                    'data-toggle' => 'collapse',
                                    'data-target' => '#sidebar2',
                                    'class' => 'dropdown'
                                ],
                                'items' => [
                                    [
                                        'label' => 'asdasd',
                                        'url' => ['/admin/main'],
                                        'active' => Yii::$app->controller->id == 'test',
                                    ],                                
                                ],
                            ],
                        ],
                        'activateParents'=>true,
                        'labelTemplate'	=>'<div>{label}</div>',
                        'activeCssClass' => 'active',  
                        'submenuTemplate' => "\n<ul <i>id='sidebar1'</i> class='nav collapse'>\n{items}\n</ul>\n",
                        'options' => [
                            'class' => 'nav nav-sidebar'
                        ]
                        
                    ]); ?>
  • Вопрос задан
  • 562 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
latteo
@latteo
https://github.com/yiisoft/yii2-framework/blob/2.0...

Задавая submenuTemplate после items вы меняете дефолтный шаблон для submenu.
Достаточно задавать их внутри items первого уровня, для получения нужного эффекта.

[
      'label' => 'Тестовый пункт',
      'options' => [
        'data-toggle' => 'collapse',
        'data-target' => '#sidebar2',
        'class' => 'dropdown'
      ],
      'items' => [
        [
          'label' => 'asdasd',
          'url' => ['/admin/main'],
          'active' => Yii::$app->controller->id == 'test',
        ],                
      ],
      'submenuTemplate' => "\n<ul id='sidebar2' class='nav collapse'>\n{items}\n</ul>\n",
    ],
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Думаю придется написать свой класс виджета, унаследовать от yii\widgets\Menu и переписать метод рендера пункта меню
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы