owl1n
@owl1n
fullstack developer

Как правильно зарегистрировать обработчик события в собственном модуле?

Как правильно сделать обработчик? Все делал по документации, по информации в интернете, но так ничего и не выходит. Да и вообще, очень мало информации об этом.

Вот, сначала регистрирую обработчик при установке модуля
RegisterModuleDependences("sale", "OnOrderSave",   $this->MODULE_ID, "", "importOrderAdd");


В документации сказано, что если 4 параметр пуст, то будет подключать include.php из папки модуля и там уже будет найдена функция. В данном случае, это importOrderAdd.

И вот, добавляя новый заказ, ничего не происходит. В чем загвоздка? Может кто то решал данные вопросы
  • Вопрос задан
  • 6737 просмотров
Решения вопроса 1
bitrixd
@bitrixd
Поменялся API, некоторые события уже не рабочие, в версии 15. Смотри доку:
dev.1c-bitrix.ru/learning/course/index.php?COURSE_...

EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleOrderSaved',
    'myFunction'
);

function myFunction(\Main\Event $event)
{
    /** @var Order $order */
    $order = $event->getParameter("ENTITY");
    $oldValues = $event->getParameter("VALUES");
    $isNew = $event->getParameter("IS_NEW");

    if ($isNew)
    {
        $sum = $order->getPrice();
        // . . . 
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
то будет подключать include.php из папки модуля и там уже будет найдена функция.

Нет, там этого не сказано:
to_class Класс принадлежащий модулю module, метод которого является функцией-обработчиком события.
Необязательный параметр. По умолчанию - "" (будет просто подключен файл /bitrix/modules/to_module_id/include.php).
to_method Метод класса to_class являющийся функцией-обработчиком события.
Необязательный параметр. По умолчанию - "" (будет просто подключен файл /bitrix/modules/to_module_id/include.php).


Самое правильное: создайте класс и в нём метод.
Ответ написан
я регистрирую так
RegisterModuleDependences('main', 'OnProlog', self::MODULE_ID, 'my_class', 'OnProlog');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы