Чтобы это заработало, нужно регистрировать событие через registerEventHandler именно, чтобы была возможность указать параметр TO_MODULE_ID.
И в Sender::onTriggerList должен быть указан тот же moduleId что и в registerEventHandler
Итого, регистрируем событие (предпочтительнее сделать в отдельном модуль именно, в момент установки его):
И класс Sender соответственно с тем же moduleId:
*заменить module_name на имя своего модуля
Причина кроется в \Bitrix\Sender\Trigger\Manager::getClassList, там передается параметр $filter в \Bitrix\Main\Event в момент сохранения, который фильтрует события по TO_MODULE_ID. При этом TO_MODULE_ID есть только у зарегистрированных событий, а не добавленных в рантайме. Т.е. обходных путей никаких нет (я не нашел).
И в Sender::onTriggerList должен быть указан тот же moduleId что и в registerEventHandler
Итого, регистрируем событие (предпочтительнее сделать в отдельном модуль именно, в момент установки его):
| Код |
|---|
$eventManager->addEventHandler( "sender", "onTriggerList", "module_name", \Class\Events\Sender::class "onTriggerList" ); |
И класс Sender соответственно с тем же moduleId:
| Код |
|---|
class Sender
{
public static function onTriggerList(): EventResult
{
return new EventResult(
EventResult::SUCCESS,
[
'TRIGGER' => Class\Sender\TriggerFirstOrder::class
],
'module_name'
);
}
} |
Причина кроется в \Bitrix\Sender\Trigger\Manager::getClassList, там передается параметр $filter в \Bitrix\Main\Event в момент сохранения, который фильтрует события по TO_MODULE_ID. При этом TO_MODULE_ID есть только у зарегистрированных событий, а не добавленных в рантайме. Т.е. обходных путей никаких нет (я не нашел).
