Документация для разработчиков
Темная тема

Введение

Как было

На текущий момент наблюдается несколько подходов в реализации отрисовки контролов пользовательских полей:

  • через компоненты system.field.edit и system.field.view с шаблонами для пользовательских полей различных типов. Данные компоненты позволяют отрисовать контрол либо в режиме просмотра (view), либо в режиме редактирования (edit);
  • через CUserType классы старого ядра, например, CUserTypeString или CUserTypeInt, которые содержат в себе методы отрисовки контролов uf-полей для различных условий;
  • самостоятельная отрисовка контрола в конкретном компоненте. Например, так реализованы бизнес-процессы и новый фильтр в административном разделе, а также сущности CRM в мобильном приложении.

Минусы таких подходов:

  1. сложность поддержки (сейчас js, html и php "перемешаны" в методах классов CUserType);
  2. сложность поддержки различных форматов устройств (десктоп, планшет, мобильная версия и т.д.), если для каждого устройства поле должно выводиться различными способами;
  3. сложность расширения способов отображения полей (например, если для какого-то конкретного компонента требуется отрисовка поля особым уникальным способом);
  4. сложность расширения (при создании нового шаблона отображения поля необходимо реализовать его для всех существующих типов полей, даже если уникальный вид нужен только для нескольких типов полей, а для других вполне подходят стандартные шаблоны);
  5. трудоемкость создания нового типа поля.

Обновленный подход

Обновленный подход предполагает использование класса пользовательского поля и соответствующего ему компонента, содержащего все необходимые шаблоны. Например, появились связки:

  • 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