Тема: Событие создания заказа
При создании модуля нужно отловить событие создание заказа. Событие почему-то срабатывает 3 раза, если сгенерировать свое событие, то оно вызывается 4 раза.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум вебмастеров - сообщество ImageCMS → Разработка модулей, виджетов, расширений, шаблонов для ImageCMS Shop → Событие создания заказа
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
При создании модуля нужно отловить событие создание заказа. Событие почему-то срабатывает 3 раза, если сгенерировать свое событие, то оно вызывается 4 раза.
Событие генерируется в методе make_order в файле /application/modules/shop/order.php
Events::create()->registerEvent(['order' => $order, 'price' => $order->getTotalPrice()], 'Cart:MakeOrder')->runFactory();
При создании модуля в методе autoload вешается обработчик 'handler' на событие:
Events::create()->onShopMakeOrder()->setListener('handler');
или
Events::create()->setListener('handler', 'Cart:MakeOrder');
Функция handler в модуле:
public static function handler($arg)
{
print_r($arg);
}
В методе make_order генерируется еще 2 события:
Events::create()->registerEvent([], 'Cart:OrderValidated')->runFactory();
Events::create()->removeEvent('Cart:OrderValidated');
...
Events::create()->registerEvent($userInfo, 'FrontOrder:userCreate');
Events::runFactory();
В конечном итоге печатаются передаваемые аргументы 3 раза, хотя handler подписан только на одно событие.
попробуйте сделать следующее.
в класе :
public static $check_event = false;
в методе autoload
if (self::$check_event === false) {
Events::create()->onShopMakeOrder()->setListener('your_methods');
self::$check_event = true;
}
Нет, не работает, все равно 3 раза вызывается метод.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум вебмастеров - сообщество ImageCMS → Разработка модулей, виджетов, расширений, шаблонов для ImageCMS Shop → Событие создания заказа
Форум работает на PunBB, при поддержке Informer Technologies, Inc