我正在运行一个脚本来自动取消订单。 我的脚本看起来像这样。
$order->cancel()->save();
问题在于,它正确取消了订单,但似乎没有发送order_cancel_after
事件。
我该如何解决这个问题,我可以在我的脚本中发送此事件吗?为什么此取消操作与单击后端订单页面中的取消按钮不同?
答案 0 :(得分:1)
以下是我在调用order_cancel_after
时获取$order->cancel()
事件以在前端触发的内容。我不得不为Magento_Authorizenet问题实施此问题,当信用卡被拒绝时,该事件未被触发。
编辑:我刚刚意识到您的问题是针对Magento 1 EE的。如果有人在Magento 2 EE上遇到这个问题,我会留在这里。
使用指定的内容创建以下文件(用您的供应商名称替换 [Vendor] ):
此文件负责让Magento了解您的模块。在此答案中添加所有文件后,您需要运行php bin/magento setup:upgrade
。
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'[Vendor]_Reward',
__DIR__
);
此文件声明模块的安装版本及其依赖的任何模块(在我们的示例中为Magento_Reward)。
<?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>
此文件将注册已为adminhtml(后端)定义的股票Magento_Reward观察者,但是为前端(因为它在etc / 前端中的位置)执行此操作:
<?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>
答案 1 :(得分:0)
您可以像这样发送自己的活动:
Mage::dispatchEvent(
'order_cancel_after',
array('order' => $order, 'quote' => $this->getQuote())
);
根据您的使用情况放置此代码。