Класс Dialog
Основной класс для добавления в диалог элементов, вкладок и футера.
Метод | Описание | С версии |
---|---|---|
static getSelectedItems(array $ids, array $options = []): ItemCollection | Статический метод, возвращающий коллекцию элементов (объект класса ItemCollection) по заданными идентификаторам.
Разницу между getItems и getSelectedItems удобнее всего показать на примере сущности "пользователь". Например, есть запись в блоге, которая адресована нескольким пользователям. При редактировании этой записи пользователи, указанные в поле "Кому", должны быть все отображены, даже если среди них есть уволенные (неактивные). Однако уволенных сотрудников точно не должно быть в списке "Последних" или на вкладке со структурой компании. Метод getSelectedItems вернет данные по уволенным сотрудникам, а getItems нет. Данный метод обычно используют, чтобы заранее выбрать данные элементов на бэкенде и прокинуть их в JavaScript. $preselectedItems = [ ['user', 1], ['department', 1], ['user', 7], ['project', 2], ['department', '2:F'], ['meta-user', 'all-users'], ['user', 27], ]; $options = [ ['id' => 'user', 'options' => ['nameTemplate' => '#LAST_NAME#']] ]; $items = \Bitrix\UI\EntitySelector\Dialog::getItems($preselectedItems, $options); $selectedItems = $items->toJsObject(); <script> const tagSelector = new TagSelector({ dialogOptions: { context: 'MY_MODULE_CONTEXT', selectedItems: =$selectedItems?>, entities: [ { id: 'user', // пользователи }, { id: 'project', // группы и проекты }, { id: 'department', // структура компании options: { selectMode: 'usersAndDepartments' // выбор пользователей и отделов } }, { id: 'meta-user', options: { 'all-users': true // Все сотрудники } }, ], } }); tagSelector.renderTo(document.getElementById('container')); | |
static getItems(array $ids, array $options = []): ItemCollection | Статический метод, возвращающий коллекцию элементов (объект класса ItemCollection) по заданными идентификаторам.
| |
getId(): ?string | Возвращает идентификатор диалога. | |
getContext(): ?string | Возвращает идентификатор контекста. | |
getCurrentUserId(): int | Возвращает идентификатор текущего пользователя. | |
addItem(Item $item) | Добавляет элемент в диалог.
public function fillDialog(Dialog $dialog): void { $dialog->addTab(new Tab([ 'id' => 'my-tab', 'title' => 'Мой таб', 'stub' => true, 'icon' => [ 'default' => '/path/to/tab-icon.svg', 'selected' => '/path/to/tab-icon-selected.svg' ] ])); $dialog->addItem( new Item([ 'id' => 1000, 'entityId' => 'my-entity-id', 'tabs' => 'my-tab', 'title' => 'Мой элемент', 'avatar' => '/path/to/avatar.jpg', 'customData' => [ 'myOption' => true, ], ]) ); } | |
addItems(array $items) | Добавляет элементы в диалог.
| |
addRecentItem(Item $item) | Добавляет элемент на вкладку "Последние".
| |
addRecentItems(array $items) | Добавляет элементы на вкладку "Последние".
public function fillDialog(Dialog $dialog): void { $dialog->addRecentItems([ new Item([ 'id' => 1000, 'entityId' => 'my-entity-id', 'entityType' => 'active', 'title' => 'Мой элемент', 'avatar' => '/path/to/avatar.jpg', 'customData' => [ 'myOption' => true, ], ]), new Item([ 'id' => 2000, 'entityId' => 'my-entity-id', 'entityType' => 'active', 'title' => 'Мой элемент 2', 'avatar' => '/path/to/avatar.jpg', 'customData' => [ 'myStringOption' => 'kuku', ], ]) ]); } | |
getRecentItems(): RecentCollection | Возвращает коллекцию типа ItemCollection со списком элементов на вкладке "Последние", которые были выбраны в текущем контексте. Данные для коллекции выбираются диалогом автоматически.
public function fillDialog(Dialog $dialog): void { // выберем все элементы моей сущности на вкладке "Последние" $recentItems = $dialog->getRecentItems()->getEntityItems('my-entity-id'); if ($recentItems < 10) { // если элементов мало, добавим еще. $dialog->addRecentItem(new Item([ 'id' => 1000, 'entityId' => 'my-entity-id', 'entityType' => 'active', 'title' => 'Мой элемент', 'avatar' => '/path/to/avatar.jpg', 'customData' => [ 'myOption' => true, ], ])); } } | |
getGlobalRecentItems(): RecentCollection | Возвращает коллекцию типа ItemCollection со списком элементов на вкладке "Последние", которые были выбраны в глобальном контексте.
Данные для коллекции выбираются диалогом автоматически.
public function fillDialog(Dialog $dialog): void { $maxItemsInRecentTab = 30; // выберем все элементы моей сущности на вкладке "Последние" для текущего контекста. $recentItems = $dialog->getRecentItems()->getEntityItems('my-entity-id'); if (count($recentItems) < $maxItemsInRecentTab) { $limit = $maxItemsInRecentTab - count($recentItems); // выберем все элементы моей сущности на вкладке "Последние" для глобального контекста. $recentGlobalItems = $dialog->getGlobalRecentItems()->getEntityItems('my-entity-id'); foreach ($recentGlobalItems as $recentGlobalItem) { if ($limit <= 0) { break; } if (!isset($recentItems[$recentGlobalItem->getId()]) && $recentGlobalItem->isLoaded()) { // добавим элементы из глобального контекста на вкладку "Последние". $dialog->getRecentItems()->add($recentGlobalItem); $limit--; } } } } | |
getItemCollection(): ItemCollection | Возвращает коллекцию типа ItemCollection со списком всех добавленных элементов (объекты класса Item) в диалог. | |
setFooter(string $footer, array $options = []) | Устанавливает футер диалога.
public function fillDialog(Dialog $dialog): void { $dialog->setFooter('BX.SocialNetwork.EntitySelector.Footer', ['myOption' => true]); } | |
getFooter(): ?string | Возвращает футер диалога. | |
getFooterOptions(): ?array | Возвращает дополнительные опции футера. | |
addTab(Tab $tab) | Добавляет новую вкладку в диалог.
public function fillDialog(Dialog $dialog): void { $dialog->addTab(new Tab([ 'id' => 'my-tab', 'title' => 'Мой таб', 'stub' => true, 'icon' => [ 'default' => '/path/to/tab-icon.svg', 'selected' => '/path/to/tab-icon-selected.svg' ] ])); } | |
getTabs(): array | Возвращает массив вкладок (объекты класса Tab) диалога. | |
getTab(string $tabId): ?Tab | Возвращает объект вкладки по идентификатору.
| |
addEntity(Entity $entity) | Добавляет в диалог новую сущность.
| |
getEntities(): array | Возвращает массив сущностей (объекты класса Entity) диалога. | |
getEntity(string $entityId): ?Entity | Возвращает объект сущности по идентификатору.
public function fillDialog(Dialog $dialog): void { // если сущность одна в диалоге, то добавим элементы на вкладку "Последние". if (count($dialog->getEntities()) === 1) { $dialog->addRecentItems([ new Item([ 'id' => 1000, 'entityId' => 'my-entity-id', 'entityType' => 'active', 'title' => 'Мой элемент', 'avatar' => '/path/to/avatar.jpg', 'customData' => [ 'myOption' => true, ], ]), new Item([ 'id' => 2000, 'entityId' => 'my-entity-id', 'entityType' => 'active', 'title' => 'Мой элемент 2', 'avatar' => '/path/to/avatar.jpg', 'customData' => [ 'myStringOption' => 'kuku', ], ]) ]); } } |
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.