287  /  382
Справочник

События в D7

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

По сравнению со старым ядром в D7 снижены требования к данным, которые должен иметь код, порождающий событие. Пример отправки события:

$event = new Bitrix\Main\Event("main", "OnPageStart");
$event->send();

При необходимости есть возможность на стороне, отправляющей событие, получить результат его обработки принимающими сторонами.

foreach ($event->getResults() as $eventResult)
{
	switch($eventResult->getType())
	{
		case \Bitrix\Main\EventResult::ERROR:
			// обработка ошибки
			break;
		case \Bitrix\Main\EventResult::SUCCESS:
  		          // успешно
			$handlerRes = $eventResult->getParameters(); // получаем то, что вернул нам обработчик события
			break;
		case \Bitrix\Main\EventResult::UNDEFINED:
			/* обработчик вернул неизвестно что вместо объекта класса \Bitrix\Main\EventResult его результат по прежнему доступен через getParameters*/
			break;
	}
}

Для уменьшения количества кода могут быть созданы наследники класса Bitrix\Main\Event для специфических типов событий. Например, Bitrix\Main\Entity\Event делает более комфортной отправку событий, связанных с модификацией сущностей.


Список ссылок по теме:

35
Курсы разработаны в компании «1С-Битрикс»

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