186  /  380
Справочник

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

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

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