177  /  381

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

Просмотров: 3586
Дата последнего изменения: 27.10.2020
Марина Павлова
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5
Недоступно в редакциях:
Ограничений нет

События

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

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