Spec-Zone.ru › Yii 2.0

Класс 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.

См. также:

  • $route
  • isItemActive()
public array $params = null

$route свойство public

Маршрут, используемый для определения, является ли элемент меню активным или нет. Если не задано, будет использован маршрут текущего запроса.

См. также:

  • $params
  • isItemActive()
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API