Перейти к содержанию

События и кастомные типы свойств

События

Для подписи на события сущности инфоблоков можно использовать штатные механизмы ORM:

use Bitrix\Main\ORM\Data\DataManager;

// ID инфоблока
$iblockId = 32;

// объект инфоблока
$iblock = \Bitrix\Iblock\Iblock::wakeUp($iblockId);

// диспетчер событий
$em = \Bitrix\Main\ORM\EventManager::getInstance();

$em->registerEventHandler(
    $iblock->getEntityDataClass(),
    DataManager::EVENT_ON_BEFORE_ADD,
    'mymodule',
    'MyClass',
    'method'
);

Внимание! Поддержка событий информационных блоков, относящихся к старому ядру, в данный момент не реализована.

Кастомные типы свойств

Чтобы добавить свои поля в сущность свойства, при описании свойства нужно задать отдельный коллбэк GetORMFields:

public static function GetUserTypeDescription()
{
    return [
     ...
    "GetORMFields" => array(__CLASS__, "GetORMFields"),
    ];
}

/**
 * @param \Bitrix\Main\ORM\Entity $valueEntity
 * @param \Bitrix\Iblock\Property $property
 */
public static function GetORMFields($valueEntity, $property)
{
    $valueEntity->addField(
    ...
    );
}