【问题标题】:Magento 2 - Event dispatched when a user clicks "Go To Checkout"Magento 2 - 当用户点击“Go To Checkout”时调度事件
【发布时间】:2016-04-29 16:01:14
【问题描述】:

当客户在购物车中添加商品后点击“Go To Checkout”时调度的事件的名称是什么?我想注册一个用户为分析启动了结帐过程。具体来说,我需要捕获购物车的内容和其他信息,例如总价等。

我已经尝试了this list 上与“结帐”或“购物车”相关的大多数事件。当用户单击结帐时,它们似乎都没有被发送。我能得到的最近的是

controller_action_predispatch_checkout_cart_index

当用户点击“查看和编辑购物车”时调度。

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

  1. 获取当用户单击“Go To Checkout”时调度的事件的名称。观察该事件并将我的代码“挂钩”到它。
  2. 或者有没有办法实时查看所有正在调度的事件?我在想,我可能能够找到与结账时间几乎同时发送的其他一些事件,然后观察那个事件。

【问题讨论】:

    标签: php magento magento2


    【解决方案1】:

    使用controller_action_predispatch_checkout_index_index

    【讨论】:

      【解决方案2】:

      您可以使用 checkout_cart_save_before 这个活动,您可以在 vendor/magento/module-checkout/Model/Cart.php

      搜索以下代码sn-p:

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

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        我觉得应该是

            sales_quote_save_after
        

        希望对你有所帮助。

        【讨论】:

          【解决方案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】:

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

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

            当你点击Go to checkout时,有很多事件被调度,也许checkout_cart_save_before就是你要找的那个。

            【讨论】:

            • 在 Magento 中修改核心不允许,请不要那样教,甚至说这是一个肮脏的 hack
            【解决方案6】:

            使用 layout_render_before_checkout_index_index 或 controller_action_predispatch_checkout_index_index

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-12-22
              • 2012-05-17
              • 1970-01-01
              • 1970-01-01
              • 2014-08-05
              • 1970-01-01
              相关资源
              最近更新 更多