Component\EntityDetails\FactoryBased
Общее описание
Детальные карточки элемента любого типа CRM очень похожи между собой. Состоят из одинаковых элементов, работают по схожей логике.
При разработке смарт-процессов и новой карточки предложений было решено вынести общий код в базовый класс.
Сам этот класс является абстрактным, от него наследуются компоненты для отрисовки карточки элемента конкретного типа.
Т.к. чаще всего сам этот класс является клиентским кодом, большая часть данных сосредоточена в свойствах этого класса.
Большая часть методов также предназначена для использования внутри executeComponent.
Тем не менее, бывают случаи, когда необходимо обратиться к компоненту детальной карточки элемента снаружи.
Название компонента можно получить с помощью метода роутера getItemDetailComponentName.
Ниже перечислены методы, которые могут быть полезны при работе с компонентом снаружи.
Методы
| Метод | Описание | С версии |
|---|---|---|
public function setEntityTypeID(int $id): void |
Установит новый тип сущности CRM $id, с которым должен работать компонент. | |
public function getEntityTypeID(): int |
Вернет текущий тип сущности CRM, с которым работает компонент. | |
public function setEntityID($entityID): void |
Установит новый идентификатор элемента, с которым работает компонент. | |
public function init(): void |
Выполняет инициализацию - заполняет внутренние свойства класса в соответствии с параметрами компонента.
Если в процессе инициализации возникли ошибки, то они попадут коллекцию ошибок.. | |
public function getErrors(): array |
Вернет массив с ошибками \Bitrix\Main\Error[]. | |
public function getErrorByCode($code): ?Error |
Вернет ошибку по её коду $code, если такая есть. | |
public function getErrorMessages(): array |
Вернет массив сообщений об ошибках. | |
public function initializeEditorAdapter(): void |
Инициализирует сервис EditorAdapter. | |
public function getEditorConfig(): array |
Вернет параметры для компонента универсального редактора. | |
public function getInlineEditorEntityConfig(): array |
Вернет параметры для компонента универсального редактора, который используется при инлайновом редактировании элемента (например, в быстрой форме создания в канбане). | |
public function getEditorEntityConfig(): array |
Вернет конфигурацию элементов для универсального редактора (ключ ENTITY_CONFIG). | |
public function prepareFieldInfos(): array |
Вернет конфигурацию полей для универсального редактора. |
Пример использования класса компонента
use Bitrix\Crm\Service;
$entityTypeId = 140;
$componentName = Service\Container::getInstance()->getRouter()->getItemDetailComponentName($entityTypeId);
$componentClassName = \CBitrixComponent::includeComponentClass($componentName);
$component = new $componentClassName;
$component->initComponent($componentName);
$component->arParams = [
'ENTITY_TYPE_ID' => $this->factory->getEntityTypeId(),
'ENTITY_ID' => 0,
'categoryId' => $this->getCategoryId(),
];
$component->init();
if ($component->getErrors())
{
print_r($component->getErrorMessages());
return;
}
$fieldInfos = $component->prepareFieldInfos();
$entityConfig = $component->getEditorEntityConfig();
Пример кастомизации компонента смотрите тут.