Свой форматтер значений
Форматтер отвечает за то, как значение поля выглядит в журнале. Без него значения показываются как есть: идентификатор вместо названия, код вместо подписи.
Для заказов, элементов инфоблоков и самих инфоблоков форматтеры входят в модуль. Для своей сущности его пишут тогда, когда сырые значения в журнале читать неудобно.
Что делает форматтер
- Называет сущность — как она подписана в списке и фильтре журнала.
- Показывает запись — что стоит в колонке вместо первичного ключа: номер заказа, название товара, имя пользователя.
- Разворачивает значения полей — идентификатор в название, код списка в подпись.
Как подключить
Форматтеры собираются событием модуля: обработчик возвращает соответствие «класс сущности → класс форматтера». Так же зарегистрированы и штатные три — своей регистрацией они ничем не отличаются от вашей.
use Bitrix\Main\EventManager;
use Bitrix\Main\EventResult;
EventManager::getInstance()->addEventHandler(
'devbx.entitylog',
'onGetEntityFormatter',
static function () {
return new EventResult(EventResult::SUCCESS, [
'\\Vendor\\Module\\ItemTable' => \Vendor\Module\Log\ItemFormatter::class,
]);
},
);
Ключ — класс сущности, значение — класс форматтера. Форматтер обязан наследовать базовый класс модуля: несуществующий класс и класс не от базового модуль отвергает с понятным сообщением, а не пропускает молча.
Класс форматтера наследуют от базового и переопределяют то, что нужно: название сущности, вывод записи, разбор значений отдельных полей. Остальное берётся из базового класса.
Когда форматтер не нужен
Если сущность простая и её поля — числа, строки и даты, журнал читается и без форматтера. Писать его ради того, чтобы «было», не стоит: это код, который придётся сопровождать вместе с модулем.