Функцию AddEventHandler()
лучше писать в файл local/php_interface/init.php
или если этого файла нет, то в bitrix/php_interface/init.php
. Файл init.php
подключается всегда, поэтому обработчик будет точно добавлен.
Теория
Функция AddEventHandler()
в bitrix предоставляет возможность добавить свою логику при наступлении определенных событий в системе.
Пример регистрации обработчика, который является простой функцией:
<?php
AddEventHandler("main", "OnBeforeUserAdd", "myOnBeforeUserAddHandler");
Пример регистрации обработчика, который является методом класса:
<?php
AddEventHandler("main", "OnBeforeUserAdd", ["UserHandler", "OnBeforeUserAddHandler"]);
Новое ядро (d7)
Помимо функции AddEventHandler()
в старом ядре есть метод addEventHandler()
у объекта \Bitrix\Main\EventManager
в новом ядре, пример его использования:
<?php
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("main", "OnEpilog", "myOnEpilog");
Заключение
В Bitrix развитая система событий, которая позволяет вам расширять функциональность проекта. События в системе возникают в разных местах: при добавлении пользователя, изменении элемента инфоблока, отправке формы и так далее. Например можно добавить свою вкладку в карточку элемента CRM как написано в этой статье.
Помимо стандратных событий можно добавлять свои и при необходимости добавлять на них обработчики как написано в этой статье.
Добавление обработчиков на события дает вам гибкость и контроль над тем, что происходит в вашем приложении. Например, можно изменить данные перед сохранением, отправить уведомление или выполнить другую полезную задачу.
Работать с системой событий Bitrix довольно просто. Она позволяет настроить проект под ваши нужды, добавить уникальные фишки и сделать сайт более удобным для пользователей.