• Почему обработчик события не вызывается?

    @PetrPo
    Пришлось потупить немного...

    Если зарегистрируешь так событие, твой вариант будет ок работать
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->registerEventHandler('sale', 'OnSaleOrderSaved', $this->MODULE_ID, '\\Yolo\\Bonus\\EventHandler', 'myFunction');

    5e3d6ad0da8ad239350040.jpeg

    P.S. не забудь удалить свое событие из базы и почистить кеш

    P.P.S. в доках на счет объекта \Bitrix\Main\Event $event все верно написано, просто замес старого и нового апи получился)) Таже херня получится между AddEventHandler и $eventManager->addEventHandler
    Ответ написан
    1 комментарий
  • Как правильно подключить обработчик событий в своем модуле?

    udjin123
    @udjin123
    PHP, Golang, React
    В install/index.php модуля надо зарегистрировать зависимость с помощью вот этой функции
    https://dev.1c-bitrix.ru/api_help/main/functions/m...

    А файл класть в lib/ чтобы работала автозагрузка классов битрикса

    Пример:

    В install/index.php
    function InstallEvents()
    {
            RegisterModuleDependences('search', 'BeforeIndex', 'mymodule.smartsearch', '\\MyModule\\SmartSearch\\EventHandler', 'BeforeIndex');
    }
    
    function UnInstallEvents()
    {
            UnRegisterModuleDependences('search', 'BeforeIndex', 'mymodule.smartsearch', '\\MyModule\\SmartSearch\\EventHandler', 'BeforeIndex');
    }


    В libs/ файл eventhandler.php с содержимым
    namespace MyModule\SmartSearch;
    
    class EventHandler
    {
        function BeforeIndex($arFields)
        {
            \CModule::IncludeModule("iblock");
    
            if ($arFields["MODULE_ID"] == "iblock") {
                $result = \CIBlockElement::GetByID($arFields["ITEM_ID"]);
                if ($element = $result->Fetch()) {
    
                    $arFields['PARAM1'] = $element['IBLOCK_SECTION_ID'];
                }
            }
    
            return $arFields;
        }
    }
    Ответ написан
    1 комментарий