Подтвердить что ты не робот

Magento 2 - событие, отправленное, когда пользователь нажимает "Go To Checkout",

Каково название события, которое отправляется, когда клиент нажимает кнопку "Перейти к проверке" после добавления материала в корзину? Я хочу зарегистрировать, что пользователь начал процесс проверки для аналитики. В частности, мне нужно зафиксировать содержимое тележки и другую информацию, такую ​​как общая цена и т.д.

Я пробовал большинство событий этот список, которые связаны либо с "checkout", либо с "cart". Ни один из них, похоже, не отправляется, когда пользователь нажимает кнопку проверки. Ближайшим, что я мог получить, было

controller_action_predispatch_checkout_cart_index

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

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

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

Ответ 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);
    ...
}

Ответ 2

Используйте controller_action_predispatch_checkout_index_index.

Ответ 3

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

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

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

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

Ответ 4

Возможно, это второй способ, который вы ищете. Вы можете регистрировать все события в методе "\ Magento\Framework\Event\Manager:: dispatch" (файл./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"

Ответ 5

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

    sales_quote_save_after

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