Простой вывод данных
Для примера возьмём сущность Bitrix\Catalog\PriceTable модуля catalog.
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php');
use Bitrix\Main\Loader;
use DevBx\Core\UI\List\Controller;
use DevBx\Core\UI\List\EntityList;
Loader::includeModule('catalog');
Loader::includeModule('devbx.core');
$APPLICATION->SetTitle('Цены');
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php');
$controller = new Controller();
$controller->initialize(['dataClass' => \Bitrix\Catalog\PriceTable::class]);
(new EntityList($controller))->show();
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php');
Получится готовый список с фильтром, сортировкой и постраничной навигацией: колонки построены по полям сущности, фильтр — по тем же полям.
Что происходит при initialize
| Параметр | Что делает |
|---|---|
dataClass |
сущность, которую показываем; класс проверяется на наследование DataManager |
editUrl |
адрес формы редактирования; если не задан, берётся текущий адрес с заменой list.php на edit.php |
Ошибки initialize возвращает в Bitrix\Main\Result, а не бросает исключением — их стоит
показать, если класс сущности приходит извне:
$result = $controller->initialize(['dataClass' => $dataClass]);
if (!$result->isSuccess()) {
ShowError(implode('<br>', $result->getErrorMessages()));
return;
}
Права доступа
Список сам проверяет права на модуль сущности: чтение открывает просмотр, запись — правку, добавление и удаление. Пользователь без доступа увидит сообщение об отказе вместо списка.
Своя проверка — это переопределение canView(), canEdit(), canAdd(), canDelete() в
наследнике контроллера.