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

Обзор

Административный список строится из двух классов:

Класс Отвечает за
DevBx\Core\UI\List\Controller что показывать: сущность, колонки, фильтр, права, действия над строками
DevBx\Core\UI\List\EntityList вывод: сетка, фильтр, постраничная навигация, обработка запросов

Работают они с сущностями, унаследованными от Bitrix\Main\ORM\Data\DataManager: список сам разбирает поля сущности, строит по ним колонки и фильтр.

Минимальная страница

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');

Почему два класса, а не один

Раньше список был одним классом DevBx\Core\Admin\AdminList: настройки передавались массивом, особое поведение — функциями обратного вызова. Такой список тяжело было расширять: массив разрастался, а обратные вызовы не видели друг друга.

Теперь поведение задаётся наследником контроллера — методы переопределяются как обычно, видят состояние объекта и вызывают друг друга. Представление при этом остаётся неизменным.

Если в вашем коде осталось старое имя класса, смотрите страницу Переход со старых классов Admin: там таблица соответствия и порядок замены.

Дальше по главе

  • Простой вывод данных — список без единой правки поведения.
  • Редактирование списка — правка прямо в строках и поля только для чтения.
  • Предустановленный фильтр — список, ограниченный своим условием.
  • Своя функция обновления данных — когда сущность не умеет сохранять сама.
  • Добавление и удаление данных — кнопки и действия над строками.
  • Свой обработчик вывода поля — как показать значение по-своему.
  • Добавление редактируемых полей — своё поле ввода в строке списка.