Класс yii\widgets\Menu
| Наследование | yii\widgets\Menu » yii\base\Widget » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable, yii\base\ViewContextInterface |
| Подклассы | yii\jui\Menu |
| Доступен с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/widgets/Menu.php |
Menu отображает многоуровневое меню с использованием вложенных HTML списков.
Основным свойством Menu является $items, которое определяет возможные пункты меню. Элемент меню может содержать подпункты, определяющие подменю под этим элементом.
Menu проверяет текущий маршрут и параметры запроса, чтобы переключать определенные пункты меню в активное состояние.
Обратите внимание, что Menu только отображает HTML-теги меню. Он не выполняет стилизацию. Вы отвечаете за предоставление CSS-стилей, чтобы это выглядело как настоящее меню.
Следующий пример демонстрирует использование Menu:
echo Menu::widget([
'items' => [
// Important: you need to specify url as 'controller/action',
// not just as 'controller' even if default action is used.
['label' => 'Home', 'url' => ['site/index']],
// 'Products' menu item will be selected as long as the route is 'product/index'
['label' => 'Products', 'url' => ['product/index'], 'items' => [
['label' => 'New Arrivals', 'url' => ['product/index', 'tag' => 'new']],
['label' => 'Most Popular', 'url' => ['product/index', 'tag' => 'popular']],
]],
['label' => 'Login', 'url' => ['site/login'], 'visible' => Yii::$app->user->isGuest],
],
]);
Общественные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $activateItems | boolean | Включать/выключать автоматическое активацию пунктов в зависимости от совпадения их маршрута с текущим запрошенным маршрутом. | yii\widgets\Menu |
| $activateParents | boolean | Включать/выключать активацию родительских пунктов меню, когда один из соответствующих дочерних пунктов меню активен. | yii\widgets\Menu |
| $activeCssClass | string | CSS-класс, который будет добавлен к активному пункту меню. | yii\widgets\Menu |
| $autoIdPrefix | string | Префикс к автоматически сгенерированным ID виджетов. | yii\base\Widget |
| $behaviors | yii\base\Behavior[] | Список поведенческих компонентов, присоединённых к этому компоненту. | yii\base\Component |
| $counter | integer | Счётчик, используемый для генерации ID виджетов. | yii\base\Widget |
| $encodeLabels | boolean | Включать/выключать HTML-кодирование меток пунктов меню. | yii\widgets\Menu |
| $firstItemCssClass | string | CSS-класс, который будет назначен первому элементу в главном меню или каждом подменю. | yii\widgets\Menu |
| $hideEmptyItems | boolean | Скрывать ли пустые пункты меню. | yii\widgets\Menu |
| $id | string | ID виджета. | yii\base\Widget |
| $itemOptions | array | Список HTML-атрибутов, общих для всех пунктов меню $items. | yii\widgets\Menu |
| $items | array | Список пунктов меню. | yii\widgets\Menu |
| $labelTemplate | string | Шаблон, используемый для отображения тела пункта меню, который НЕ является ссылкой. | yii\widgets\Menu |
| $lastItemCssClass | string | CSS-класс, который будет назначен последнему пункту в главном меню или каждом подменю. | yii\widgets\Menu |
| $linkTemplate | string | Шаблон, используемый для отображения тела пункта меню, который является ссылкой. | yii\widgets\Menu |
| $options | array | HTML-атрибуты для тега контейнера меню. | yii\widgets\Menu |
| $params | array | Параметры, используемые для определения активности пункта меню. | yii\widgets\Menu |
| $route | string | Маршрут, используемый для определения активности пункта меню. | yii\widgets\Menu |
| $stack | yii\base\Widget[] | Виджеты, которые в настоящее время отображаются (не завершены). | yii\base\Widget |
| $submenuTemplate | string | Шаблон, используемый для отображения списка подменю. | yii\widgets\Menu |
| $view | yii\web\View | Объект представления, который может использоваться для отображения представлений или файлов представлений. | yii\base\Widget |
| $viewPath | string | Директория, содержащая файлы представлений для этого виджета. | yii\base\Widget |
Общественные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Object |
| __clone() | Этот метод вызывается после создания объекта путём клонирования существующего. | yii\base\Component |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| afterRun() | Этот метод вызывается сразу после выполнения виджета. | yii\base\Widget |
| attachBehavior() | Присоединяет поведение к данному компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| beforeRun() | Этот метод вызывается непосредственно перед выполнением виджета. | yii\base\Widget |
| begin() | Начинает выполнение виджета. | yii\base\Widget |
| behaviors() | Возвращает список поведений, по которым должен действовать данный компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| end() | Завершает выполнение виджета. | yii\base\Widget |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все присоединённые к этому компоненту поведения. | yii\base\Component |
| getId() | Возвращает идентификатор виджета. | yii\base\Widget |
| getView() | Возвращает объект представления, который можно использовать для рендеринга представлений или файлов представлений. | yii\base\Widget |
| getViewPath() | Возвращает каталог, содержащий файлы представлений для этого виджета. | yii\base\Widget |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчики, присоединённые к заданному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Widget |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| render() | Рендерит представление. | yii\base\Widget |
| renderFile() | Рендерит файл представления. | yii\base\Widget |
| run() | Рендерит меню. | yii\widgets\Menu |
| setId() | Устанавливает идентификатор виджета. | yii\base\Widget |
| setView() | Устанавливает объект представления, который будет использоваться этим виджетом. | yii\base\Widget |
| trigger() | Вызывает событие. | yii\base\Component |
| widget() | Создаёт экземпляр виджета и запускает его. | yii\base\Widget |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| isItemActive() | Проверяет, является ли элемент меню активным. | yii\widgets\Menu |
| normalizeItems() | Нормализует свойство $items, чтобы удалить невидимые элементы и активировать определённые. | yii\widgets\Menu |
| renderItem() | Рендерит содержимое элемента меню. | yii\widgets\Menu |
| renderItems() | Рекурсивно рендерит элементы меню (без контейнерной метки). | yii\widgets\Menu |
События
| Событие | Тип | Описание | Определено в |
|---|---|---|---|
| EVENT_AFTER_RUN | yii\base\WidgetEvent | Событие, поднимаемое сразу после выполнения виджета. (доступно начиная с версии 2.0.11) | yii\base\Widget |
| EVENT_BEFORE_RUN | yii\base\WidgetEvent | Событие, поднимаемое непосредственно перед выполнением виджета. (доступно начиная с версии 2.0.11) | yii\base\Widget |
| EVENT_INIT | yii\base\Event | Событие, которое срабатывает при инициализации виджета через init(). (доступно начиная с версии 2.0.11) | yii\base\Widget |
Подробное описание свойств
$activateItems общедоступное свойство
Автоматически активировать элементы в зависимости от соответствия их параметра маршрута текущему запрошенному маршруту.
См. также isItemActive().
public boolean $activateItems = true
$activateParents общедоступное свойство
Активировать родительские элементы меню, когда один из соответствующих дочерних элементов меню активен. У активированных родительских элементов меню также будут добавлены CSS-классы, добавленные к $activeCssClass.
public boolean $activateParents = false
$activeCssClass общедоступное свойство
CSS-класс, который будет добавлен к активному элементу меню.
public string $activeCssClass = 'active'
$encodeLabels общедоступное свойство
Необходимо ли кодировать метки элементов меню в HTML.
public boolean $encodeLabels = true
$firstItemCssClass общедоступное свойство
Класс CSS, который будет назначен первому элементу в главном меню или каждому подменю. По умолчанию равен null, что означает, что такой класс CSS не будет назначен.
public string $firstItemCssClass = null
$hideEmptyItems свойство public
Указывает, нужно ли скрывать пустые элементы меню. Пустым элементом меню является элемент, у которого url опция не установлена и который не имеет видимых дочерних элементов меню.
public boolean $hideEmptyItems = true
$itemOptions свойство public
Список HTML-атрибутов, общих для всех элементов меню $items. Если отдельный элемент меню указывает свои options, они будут объединены с этим свойством перед использованием для генерации HTML-атрибутов для тега элемента меню. Признаются следующие специальные опции:
- tag: строка, по умолчанию "li", имя тега тегов-контейнеров элемента. Установите в false, чтобы отключить тег контейнера. См. также yii\helpers\Html::tag().
См. также yii\helpers\Html::renderTagAttributes() для получения подробной информации о том, как атрибуты выводятся.
public array $itemOptions = []
$items свойство public
Список элементов меню. Каждый элемент меню должен быть массивом следующей структуры:
- label: строка, необязательно, задает метку элемента меню. Когда $encodeLabels имеет значение true, метка будет закодирована в HTML. Если метка не указана, будет использована пустая строка.
- encode: boolean, необязательно, нужно ли кодировать метку этого элемента в HTML. Этот параметр переопределит глобальный параметр $encodeLabels.
- url: строка или массив, необязательно, указывает URL элемента меню. Он будет обработан с помощью yii\helpers\Url::to(). Если он установлен, фактическое содержимое элемента меню будет сгенерировано с использованием $linkTemplate; в противном случае будет использован $labelTemplate.
- visible: boolean, необязательно, отображается ли этот элемент меню. По умолчанию true.
- items: массив, необязательно, задает элементы подменю. Его формат аналогичен родительским элементам.
- active: boolean или Closure, необязательно, активен ли этот элемент меню (в данный момент выбран). При использовании замыкания его сигнатура должна быть
function ($item, $hasActiveChild, $isItemActive, $widget). Замыкание должно возвращатьtrueесли элемент должен быть помечен какactive, в противном случае -false. Если элемент меню активен, его класс CSS будет дополнен $activeCssClass. Если этот параметр не установлен, элемент меню будет автоматически активирован при запуске текущего запросаurl. Для получения более подробной информации, пожалуйста, обратитесь к isItemActive(). - template: строка, необязательно, шаблон, используемый для рендеринга содержимого этого элемента меню. Токен
{url}будет заменен на URL, связанный с этим элементом меню, а токен{label}- на метку элемента меню. Если эта опция не установлена, будет использоваться $linkTemplate или $labelTemplate. - submenuTemplate: строка, необязательно, шаблон, используемый для рендеринга списка подменю. Токен
{items}будет заменен на отрендеренные элементы подменю. Если эта опция не установлена, будет использоваться $submenuTemplate. - options: массив, необязательно, HTML-атрибуты для тега контейнера меню.
public array $items = []
$labelTemplate свойство public
Шаблон, используемый для рендеринга тела меню, которое НЕ является ссылкой. В этом шаблоне токен {label} будет заменён на метку элемента меню. Это свойство будет переопределено опцией template, заданной в отдельных элементах меню через $items.
public string $labelTemplate = '{label}'
$lastItemCssClass свойство public
Класс CSS, который будет назначен последнему элементу в главном меню или каждом подменю. По умолчанию равен null, что означает, что такой класс CSS не будет назначен.
public string $lastItemCssClass = null
$linkTemplate свойство public
Шаблон, используемый для рендеринга тела меню, которое является ссылкой. В этом шаблоне токен {url} будет заменён соответствующим URL-адресом ссылки; а {label} будет заменён текстом ссылки. Это свойство будет переопределено опцией template, заданной в отдельных элементах меню через $items.
public string $linkTemplate = '<a href="{url}">{label}</a>'
$options свойство public
HTML-атрибуты для тега контейнера меню. Признаются следующие специальные опции:
- tag: строка, по умолчанию "ul", имя тега тегов-контейнеров элемента. Установите в false, чтобы отключить тег контейнера. См. также yii\helpers\Html::tag().
См. также yii\helpers\Html::renderTagAttributes() для получения подробной информации о том, как атрибуты выводятся.
public array $options = []
$params свойство public
Параметры, используемые для определения, является ли элемент меню активным или нет. Если не задано, будет использовано $_GET.
См. также:
public array $params = null
$route свойство public
Маршрут, используемый для определения, является ли элемент меню активным или нет. Если не задано, будет использован маршрут текущего запроса.
См. также:
public string $route = null
$submenuTemplate свойство public
Шаблон, используемый для рендеринга списка подменю. В этом шаблоне токен {items} будет заменён отрендеренными элементами подменю.
public string $submenuTemplate = "\n<ul>\n{items}\n</ul>\n"
Подробное описание методов
isItemActive() защищённый метод
Проверяет, активен ли элемент меню.
Это делается путем проверки, совпадают ли $route и $params со значениями, указанными в опции url элемента меню. Когда опция url элемента меню указана в виде массива, его первый элемент рассматривается как маршрут элемента, а остальные элементы — как связанные параметры. Только при совпадении маршрута и параметров с $route и $params соответственно элемент меню считается активным.
| защищённый boolean isItemActive ( $item ) | ||
|---|---|---|
| $item | массив |
Проверяемый элемент меню |
| return | boolean |
Является ли элемент меню активным |
normalizeItems() защищённый метод
Нормализует свойство $items, удаляя невидимые элементы и активируя определённые элементы.
| защищённый массив normalizeItems ( $items, &$active ) | ||
|---|---|---|
| $items | массив |
Элементы, которые нужно нормализовать. |
| $active | boolean |
Есть ли активный дочерний элемент меню. |
| return | массив |
Нормализованные элементы меню |
renderItem() защищённый метод
Рендерит содержимое элемента меню.
Обратите внимание, что контейнер и подменю здесь не рендерируются.
| защищённый строка renderItem ( $item ) | ||
|---|---|---|
| $item | массив |
Элемент меню, который нужно рендерить. Обратитесь к $items, чтобы увидеть, какие данные могут быть в элементе. |
| return | строка |
Результат рендеринга |
renderItems() защищённый метод
Рекурсивно рендерит элементы меню (без тега контейнера).
| защищённый строка renderItems ( $items ) | ||
|---|---|---|
| $items | массив |
Элементы меню, которые нужно рекурсивно рендерить |
| return | строка |
Результат рендеринга |
run() публичный метод
Рендерит меню.
| публичный void run ( ) |
|---|
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-widgets-menu.html