【问题标题】:Magento 2 Observer not working on event 'checkout_onepage_controller_success_action'Magento 2 Observer 无法处理事件“checkout_onepage_controller_success_action”
【发布时间】:2020-06-02 01:10:57
【问题描述】:

我在这里尝试了很多建议,但似乎没有什么对我有用。我正在尝试收听事件'checkout_onepage_controller_success_action'。我正在尝试在结帐时将订单状态设置为“完成”(目前,我已注释掉该部分)。

正如您在下面看到的(在执行方法中),我试图打印出订单对象然后退出。但是在测试时,什么也没有发生。没有打印出来,没有错误信息。没什么...

我在测试前运行了以下命令: bin/magento setup:upgrade, bin/magento setup:di:compile, bin/magento cache:clean

我还尝试收听事件sales_order_place_after。我也一无所获……

应用程序/代码/[公司]/[模块]/etc/frontend/events.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="checkout_onepage_controller_success_action">
        <observer instance="[company]\[module]\Observer\CheckoutSuccessObserver" name="checkout_onepage_controller_success_action_observer"/>
    </event>
</config>

app/code/[company]/[module]/Observer/CheckoutSuccessObserver.php

<?php

namespace [company]\[module]\Observer;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer; 

/**
 * Class CheckoutSuccessObserver
 *
 * @package [company]\[module]\Observer
 */
class CheckoutSuccessObserver implements ObserverInterface
{

    /**
     * Execute observer
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     */
    public function execute(Observer $observer) 
    {
        $order = $observer->getEvent()->getOrder();
        print_r($order); exit;

        //$order = $observer->getEvent()->getOrder();
        //$order_id = $order->getIncrementId();

        //$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
        //$order->setData('state', "complete");
        //$order->setStatus("complete");      

        //$history = $order->addStatusHistoryComment('Order was set to complete by our automation tool.', false);
        //$history->setIsCustomerNotified(null);

        //$order->save();
    }
}

【问题讨论】:

  • 你的模块启用了吗?

标签: magento magento2


【解决方案1】:

您的示例代码看起来不错。 您是否启用了自定义模块?使用bin/magento module:status [company]_[module]检查它 也尝试清除项目的目录:https://devdocs.magento.com/guides/v2.3/howdoi/php/php_clear-dirs.html

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多