В X-Cart Next есть механизм отложенных событий или отложенных задач, когда событие кидается сейчас, а его обработчик запускается в отдельном процессе позже.
Для того, чтобы объявить свой обработчик своего события, надо:
1. Перекрыть метод \XLite\Core\EventListener::getListeners(), где связать имя события и класс-обработчик.
2. Написать свой класс обработчик, наследуясь от \XLite\Core\EventListener\AEventListener или \XLite\Core\EventListener\Base\Countable.
Пример простого обработчика - \XLite\Core\EventListener\Probe
Пример навороченного обработчика - \XLite\Module\CDev\AmazonS3Images\Core\EventListener\MigrateToS3
Вызывается событие просто:
\XLite\Core\EventTask::eventName($arg1, $arg2, ..., $argN);
Навороченный обработчик, который наследуется от \XLite\Core\EventListener\Base\Countable, до кучи хранит свое состояние в модели TmpVar. Таким образом, его состояние можно узнать вот так:
\XLite\Core\Database::getRepo('XLite\Model\TmpVar')->getEventState('eventName');
Инициализируется такое событие тоже сложнее:
\XLite\Core\Database::getRepo('XLite\Model\TmpVar')->initializeEventState('eventName');
\XLite\Core\EventTask::eventName($arg1, $arg2, ..., $argN);
Комментариев нет:
Отправить комментарий