以编程方式取消订单时未触发Magento事件

以编程方式取消订单时未触发Magento事件,magento,Magento,我正在运行一个脚本来自动取消订单。 我的脚本看起来像这样 $order->cancel()->save(); 这样做的问题是,它正确地取消订单,但似乎在事件之后不发送order\u cancel\u 我应该如何解决这个问题,我可以在脚本中调度这个事件吗?为什么此取消操作与单击“后端订单”页面中的“取消”按钮不同?您可以这样发送自己的事件: Mage::dispatchEvent( 'order_cancel_after', array('order'

我正在运行一个脚本来自动取消订单。 我的脚本看起来像这样

$order->cancel()->save();
这样做的问题是,它正确地取消订单,但似乎在事件之后不发送
order\u cancel\u


我应该如何解决这个问题,我可以在脚本中调度这个事件吗?为什么此取消操作与单击“后端订单”页面中的“取消”按钮不同?

您可以这样发送自己的事件:

Mage::dispatchEvent(
        'order_cancel_after',
        array('order' => $order, 'quote' => $this->getQuote())
    );

根据您的使用情况放置此代码。

以下是我在调用
$order->cancel()
时在前端触发
$order->cancel>事件后,使
订单(取消)的方法。我必须为一个Magento_Authorizenet问题实施这一措施,在该问题上,当信用卡被拒绝时,该事件没有被触发

编辑:我刚刚意识到你的问题是针对Magento 1 EE的。我将把这个留在这里,以防任何人在Magento 2 EE上也有这个问题

使用指定的内容创建以下文件(用您的供应商名称替换[Vendor]):

app/code/[Vendor]/Reward/registration.php 此文件负责让Magento了解您的模块。在这个答案中添加所有文件后,您将需要运行
php bin/magento安装程序:升级

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    '[Vendor]_Reward',
    __DIR__
);

您能在扩展的config.xml中共享添加的事件句柄吗?这是企业奖励扩展,我想触发订单\u取消\u,以便此扩展将奖励返回给客户。@Jack我现在正在处理Magento 2 EE中完全相同的问题。Magento_Rewards中的order_cancel_after事件似乎仅配置为在后端触发。我将添加一个答案,说明如何添加模块,以便在前端注册事件观察者。
<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="[Vendor]_Reward" setup_version="0.1.0">
        <sequence>
            <module name="Magento_Reward"/>
        </sequence>
    </module>
</config>
<?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="order_cancel_after">
        <observer name="magento_reward" instance="Magento\Reward\Observer\ReturnRewardPoints" />
    </event>
</config>