Middle Механизмы ядра Обязательно

События

Механизм событий связывает независимые части системы: в D7 используются события Bitrix\Main\Event с возвратом EventResult, тогда как классические события ядра (OnBefore*) передают данные массивами по ссылке. Регистрация обработчиков в базе через EventManager::registerEventHandler() сохраняет подписки в таблице b_module_to_module, гарантируя их сохранность при переносах кода.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Регистрация обработчиков
  • 2
    Системные события
  • 3
    Кастомные события
  • 4
    Приоритеты обработчиков

Материалы

Официальная документация

Проверь себя

После переноса php_interface с другого проекта обработчик OnSaleOrderSaved перестал вызываться. Почему регистрация в install/index.php модуля от этого защищает?

registerEventHandler() пишет запись в таблицу b_module_to_module, и она не зависит от файлов. AddEventHandler в init.php живёт только пока жив файл. Документация советует постоянную регистрацию при установке модуля.

Обработчик старого события OnBeforeIBlockElementUpdate вызывается, но массив полей внутри пустой или не меняется. Где искать?

В способе регистрации: для событий без объекта Event, где аргументы передаются напрямую и по ссылке, нужен registerEventHandlerCompatible(). Обычный registerEventHandler() оборачивает вызов иначе, и ссылка на массив теряется.

Заказчик хочет запретить закрытие тикета, если есть открытые задачи. Как обработчик D7-события сообщает об этом инициатору?

Возвращает EventResult с типом ERROR и параметрами, например текстом ошибки. Инициатор перебирает getResults() у события и сам решает, что делать; само ядро операцию не остановит.

Два обработчика одного события: ваш должен отработать после того, как модуль подготовил данные. Чем управлять?

Параметром sort при регистрации, по умолчанию 100. Обработчики вызываются по возрастанию sort, и вашему нужно значение больше, чем у обработчика модуля.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти