Magento 2 - 当用户点击" Go To Checkout"

时间:2016-01-22 22:37:40

标签: php magento magento2

当客户点击" Go To Checkout"时发送的事件的名称是什么?在他们的购物车上添加东西后?我想注册用户启动了分析的结帐流程。具体来说,我需要捕获购物车的内容和其他信息,如总价等。

我已尝试this list上与" checkout"相关的大部分活动。或"购物车"。当用户点击结帐时,似乎都没有调度它们。我能得到的最近的是

controller_action_predispatch_checkout_cart_index

当用户点击"查看和编辑购物车"。

时调度

我正在寻找解决这个问题的几种方法

  1. 获取用户点击" Go To Checkout"时调度的事件的名称。观察该事件和" hook"我的代码。
  2. 或者有没有办法实时查看所有正在发送的事件?我想我可以找到一些其他事件,这些事件会在结账的同时发送,然后再观察一下。

6 个答案:

答案 0 :(得分:3)

使用controller_action_predispatch_checkout_index_index

答案 1 :(得分:0)

你可以使用 checkout_cart_save_before 这个你可以找到的事件 的供应商/的magento /模块结账/型号/ Cart.php

搜索以下代码段:

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

希望这有助于你

答案 2 :(得分:0)

可能这是您正在寻找的第二种方式。您可以在“\ 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”文件夹

答案 3 :(得分:0)

我认为应该是

    sales_quote_save_after

希望,它会帮助你。

答案 4 :(得分:0)

如果我想记录在某些特定交互之后调度的所有事件,我会转到Magento\Framework\Event\Manager并在dispatch方法中设置一个断点,将$eventName记录到控制台。< / p>

您还可以在自定义模块中添加日志语句或编写插件,以将事件名称记录到某个文件中。

点击Go to checkout时会发送许多事件,可能checkout_cart_save_before是您正在寻找的事件。

答案 5 :(得分:0)

使用layout_render_before_checkout_index_index或controller_action_predispatch_checkout_index_index