【发布时间】:2015-12-23 16:20:40
【问题描述】:
我正在使用以下代码来防止从 Magento 管理面板取消订单。
<?xml version="1.0"?>
<config>
<modules>
<Muk_OrderCancel>
<version>1.0.0</version>
</Muk_OrderCancel>
</modules>
<global>
<models>
<ordercancel>
<class>Muk_OrderCancel_Model</class>
</ordercancel>
</models>
<events>
<sales_order_save_before>
<observers>
<ordercancel>
<type>singleton</type>
<class>Muk_OrderCancel_Model_Observer</class>
<method>canCancelOrder</method>
</ordercancel>
</observers>
</sales_order_save_before>
</events>
<helpers>
<ordercancel>
<class>Muk_OrderCancel_Model_Helper</class>
</ordercancel>
</helpers>
</global>
</config>
在观察者中,我使用以下代码:
<?php
class Muk_OrderCancel_Model_Observer
{
public function canCancelOrder( Varien_Event_Observer $observer )
{
$incrementId = $observer->getEvent()->getOrder()->getData('increment_id');
$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
$adminUserSession = Mage::getSingleton('admin/session');
$adminUserId = $adminUserSession->getUser()->getUserId();
$adminUserName = $adminUserSession->getUser()->getUsername();
$adminRoleName = Mage::getModel('admin/user')->load($adminUserId)
->getRole()->getData('role_name');
if($adminRoleName) { //some condition
$order->setActionFlag(Mage_Sales_Model_Order::ACTION_FLAG_CANCEL, false);
}
}
}
但即使启用此模块后,订单也会被取消。
如何防止订单被取消?
【问题讨论】:
-
你清除缓存了吗?
-
@MarkoNovakovic 我已经清除了缓存,控制权转到观察者中的方法,但是订单仍然被取消。
标签: magento magento-1.7 magento-1.9 magento-1.8