Введение
Как было
На текущий момент наблюдается несколько подходов в реализации отрисовки контролов пользовательских полей:
- через компоненты system.field.edit и system.field.view с шаблонами для пользовательских полей различных типов. Данные компоненты позволяют отрисовать контрол либо в режиме просмотра (view), либо в режиме редактирования (edit);
- через CUserType классы старого ядра, например, CUserTypeString или CUserTypeInt, которые содержат в себе методы отрисовки контролов uf-полей для различных условий;
- самостоятельная отрисовка контрола в конкретном компоненте. Например, так реализованы бизнес-процессы и новый фильтр в административном разделе, а также сущности CRM в мобильном приложении.
Минусы таких подходов:
- сложность поддержки (сейчас js, html и php "перемешаны" в методах классов CUserType);
- сложность поддержки различных форматов устройств (десктоп, планшет, мобильная версия и т.д.), если для каждого устройства поле должно выводиться различными способами;
- сложность расширения способов отображения полей (например, если для какого-то конкретного компонента требуется отрисовка поля особым уникальным способом);
- сложность расширения (при создании нового шаблона отображения поля необходимо реализовать его для всех существующих типов полей, даже если уникальный вид нужен только для нескольких типов полей, а для других вполне подходят стандартные шаблоны);
- трудоемкость создания нового типа поля.
Обновленный подход
Обновленный подход предполагает использование класса пользовательского поля и соответствующего ему компонента, содержащего все необходимые шаблоны. Например, появились связки:
main/lib/userfield/types/StringType
иmain/install/components/bitrix/main.field.string
iblock/lib/userfield/types/ElementType
иiblock/install/components/bitrix/iblock.field.element
Для обеспечения обратной совместимости старые классы UserType сохранены и представляют собой заглушки.
Вызовы компонентов system.field.edit и system.field.view также приводят к вызову отрисовки контрола при помощи нового api.
Примечание: обновленный подход доступен с версии Главного модуля (main) 20.0.800.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024