laker-ls / yii2-nested-set-menu
Widget creates a menu from nesting set tree.
Installs: 3 748
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 1
Open Issues: 0
Type:yii2-extension
README
yii2-nested-set-menu
Это расширение является виджетом для yii2. Выводит список пунктов меню, используя дерево каталогов Nested Set. Вложенность не ограничена.
Есть возможность указать любые атрибуты для всех тегов, к примеру class
, style
и другие, так же есть возможность указать иконку для пунтка меню, который имеет вложенности.
Установка
Рекомендуемый способ установки этого расширения является использование composer. Проверьте composer.json на предмет требований и зависимостей данного расширения.
Для установки запустите
$ php composer.phar require laker-ls/yii2-nested-set-menu "~2.2.0"
или добавьте в composer.json
в раздел require
следующую строку
"laker-ls/yii2-nested-set-menu": "~2.2.0"
Смотрите список изменений для подробной информации о версиях.
Использование
Обязательный параметр allCategories
, должен быть массивом, который содержит объекты категорий.
Обязательными полями в базе данных являются: id
, lft
, rgt
, lvl
, name
, url
.
ВНИМАНИЕ: элементы массива должны быть отсортированы по полю
alt
по возрастанию.
Остальные параметры являются не обязательными и используются для указания атрибутов тегам, к примеру class
, style
и другие.
Для того, что бы присвоить к вложенному пункту меню иконку, передайте строкой классы иконки.
Пример использования виджета с вложенными пунктами меню:
use lakerLS\nestedSet\Menu; echo Menu::widget([ 'allCategories' => $allCategory, 'beginLvl' => 1, 'options' => [ 'main' => [ 'ul' => ['class' => 'navbar-nav mr-auto', 'style' => 'margin-top: 20px'], 'lonely' => [ 'li' => ['class' => 'nav-item'], 'a' => ['class' => 'nav-link'], ], 'hasNesting' => [ 'li' => ['class' => 'nav-item dropdown'], 'a' => ['class' => 'nav-link dropdown-toggle'], 'icon' => 'fa fa-arrow-bottom' ], 'active' => [ 'li' => ['class' => 'active'], 'a' => ['class' => 'maybe-necessary-a-instead-of-li', ] ], 'nested' => [ 'ul' => ['class' => 'dropdown-menu', 'data-toggle' => 'example'], 'lonely' => [ 'li' => ['class' => 'dropdown-item'], 'a' => ['class' => 'dropdown-link'], ], 'hasNesting' => [ 'li' => ['class' => 'dropdown-item dropdown'], 'a' => ['class' => 'dropdown-link dropdown'], 'icon' => 'fa fa-arrow-right' ], 'active' => [ 'li' => ['class' => 'active'], 'a' => ['class' => 'maybe-necessary-a-instead-of-li', ] ], ], ]);
Пример использования виджета без вложенных пунктов меню:
use lakerLS\nestedSet\Menu; echo Menu::widget([ 'allCategories' => $allCategory, 'options' => [ 'main' => [ 'ul' => ['class' => 'navbar-nav mr-auto', 'style' => 'margin-top: 20px'], 'lonely' => [ 'li' => ['class' => 'nav-item'], 'a' => ['class' => 'nav-link'], ], 'hasNesting' => [ 'li' => ['class' => 'nav-item dropdown'], 'a' => ['class' => 'nav-link dropdown-toggle'], 'icon' => 'fa fa-arrow-bottom' ], 'active' => [ 'li' => ['class' => 'active'], ] ], ], ]);
main
- меню первого уровня, не вложенное в какие-либо категории.
nested
- меню второго или ниже уровня, вложенное.
lonely
- пункт меню, который НЕ имеет вложенных в него категорий.
hasNesting
- пункт меню, который имеет вложенные в него категории.
active
- указываем дополнительные параметры для активного пункта меню, которые применятся к тегу li
и a
.
Основные параметры наследуются.
Параметры для ul
, li
, a
, active
передаются массивом.
Параметры для icon
передаются строкой.
Лицензия
yii2-nested-set-menu выпущено по лицензии BSD-3-Clause. Ознакомиться можно в файле LICENSE.md
.