2016-01-22 2 views
18

Каково название события, которое отправляется, когда клиент нажимает «Go To Checkout» после добавления материала в свою корзину? Я хочу зарегистрировать, что пользователь начал процесс проверки для аналитики. В частности, мне нужно зафиксировать содержимое тележки и другую информацию, такую ​​как общая цена и т. Д.Magento 2 - Событие, отправленное, когда пользователь нажимает кнопку «Go To Checkout»

Я пробовал большинство событий на this list, которые связаны либо с «выпиской», либо с «корзиной». Ни один из них, похоже, не отправляется, когда пользователь нажимает кнопку проверки. Ближайшее, что я мог бы получить было

controller_action_predispatch_checkout_cart_index

, который отправляется, когда пользователь нажимает кнопку «Просмотр и редактирование Заказов».

Я смотрю на пару способов решить эту

  1. Получить имя события, которое отправляется, когда пользователь нажимает кнопку «Go To заказ». Соблюдайте это событие и «подключите» мой код к нему.
  2. Или есть способ увидеть все события, которые отправляются в режиме реального времени? Я думаю, что я мог бы найти какое-то другое событие, которое отправляется примерно в то же время, что и проверка, и затем наблюдать за этим.

ответ

0

Вы можете использовать checkout_cart_save_before это событие, которое вы можете найти в поставщика/Magento/модуль-Checkout/Model/Cart.php

Поиск Следующий фрагмент кода:

$this->_eventManager->dispatch('checkout_cart_save_before', ['cart' => $this]); 

Надеюсь, это вам поможет

0

Возможно, это второй способ, который вы ищете. Вы можете регистрировать все события в "\ Magento \ Framework \ Event \ Диспетчер :: отправки" метод (файл ./vendor/magento/framework/Event/Manager.php):

public function dispatch($eventName, array $data = []) 
{ 
    $obm = \Magento\Framework\App\ObjectManager::getInstance(); 
    /** @var $logger \Psr\Log\LoggerInterface */ 
    $logger = $obm->get(\Psr\Log\LoggerInterface::class); 
    $logger->debug($eventName); 
    // original code 
    $eventName = mb_strtolower($eventName); 
    ... 
} 

файлы журналов помещаются в " ./var/log»папка

0

Я думаю, что это должно быть

sales_quote_save_after 

Надежда, это поможет вам.

1

Если я хочу, чтобы все события, передаваемые через какое-то определенное взаимодействие, я иду в Magento\Framework\Event\Manager и установить контрольную точку в dispatch метод, который регистрирует $eventName на консоль.

Вы также можете добавить оператор журнала или написать плагин в настраиваемом модуле, который регистрирует имя события в каком-либо файле.

Есть много событий, отправленных при нажатии Go to checkout, возможно checkout_cart_save_before - это тот, который вы ищете.

Если вы хотите быстро и грязный способ просто изменить класс в ядре и добавьте эту строку в начале функции отправки:

public function dispatch($eventName, array $data = []) 
{ 
    \Magento\Framework\App\ObjectManager::getInstance()->get(\Psr\Log\LoggerInterface::class)->debug($eventName); 
    ... 
} 
1

Использование controller_action_predispatch_checkout_index_index.