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

События в D7

Просмотров: 55172
Дата последнего изменения: 27.05.2021
Роберт Басыров
Сложность урока:
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 делает более комфортной отправку событий, связанных с модификацией сущностей.


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

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

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