Magento 2 - событие, отправленное, когда пользователь нажимает "Go To Checkout",
Каково название события, которое отправляется, когда клиент нажимает кнопку "Перейти к проверке" после добавления материала в корзину? Я хочу зарегистрировать, что пользователь начал процесс проверки для аналитики. В частности, мне нужно зафиксировать содержимое тележки и другую информацию, такую как общая цена и т.д.
Я пробовал большинство событий этот список, которые связаны либо с "checkout", либо с "cart". Ни один из них, похоже, не отправляется, когда пользователь нажимает кнопку проверки. Ближайшим, что я мог получить, было
controller_action_predispatch_checkout_cart_index
который отправляется, когда пользователь нажимает "Просмотр и редактирование корзины".
Я рассматриваю пару способов решить эту проблему.
- Получить имя события, которое отправляется, когда пользователь нажимает "Go To Checkout". Соблюдайте это событие и "подключите" мой код к нему.
- Или есть способ увидеть все события, которые отправляются в режиме реального времени? Я думаю, что я мог бы найти какое-то другое событие, которое отправляется примерно одновременно с проверкой, а затем наблюдать за этим.
Ответы
Ответ 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
Надеюсь, это поможет вам.