74  /  396

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

Просмотров: 212 (Статистика ведётся с 06.02.2017)
Марина Павлова

События

Для подписи на события сущности инфоблоков можно использовать штатные механизмы 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(
        ...
    );
}
1
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии