Документация

Простой вывод данных

Для примера возьмём сущность Bitrix\Catalog\PriceTable модуля catalog.

php · list.php
<?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, а не бросает исключением — их стоит показать, если класс сущности приходит извне:

php
$result = $controller->initialize(['dataClass' => $dataClass]);

if (!$result->isSuccess()) {
    ShowError(implode('<br>', $result->getErrorMessages()));
    return;
}

Права доступа

Список сам проверяет права на модуль сущности: чтение открывает просмотр, запись — правку, добавление и удаление. Пользователь без доступа увидит сообщение об отказе вместо списка.

Своя проверка — это переопределение canView(), canEdit(), canAdd(), canDelete() в наследнике контроллера.