我正在尝试使用以下代码删除订单 -
require 'app/Mage.php';
Mage::app('admin')->setUseSessionInUrl(false);
//replace your own orders numbers here:
$test_order_id='100000001';
try{
Mage::getModel('sales/order')->loadByIncrementId($test_order_id)->delete();
echo "order #".$test_order_id." is removed".PHP_EOL;
}catch(Exception $e){
echo "order #".$test_order_id." could not be remvoved: ".$e->getMessage().PHP_EOL;
}
}
echo "complete."
但我仍然没有取得任何成功。请帮忙。
答案 0 :(得分:2)
如果您回显了被捕获的异常$e->getMessage()
,您可能会看到以下消息:
Cannot complete this operation from non-admin area.
您要了解的是保护模型免受非安全区域影响的功能。
/**
* Safeguard func that will check, if we are in admin area
*
* @throws Mage_Core_Exception
*/
protected function _protectFromNonAdmin()
{
if (Mage::registry('isSecureArea')) {
return;
}
if (!Mage::app()->getStore()->isAdmin()) {
Mage::throwException(Mage::helper('core')->__('Cannot complete this operation from non-admin area.'));
}
}
有充分理由,非管理员网站不应该删除订单。我可以建议如下。
Mage::register('isSecureArea', 1);
我建议你在这里使用选项1或2。
对于设置脚本,您需要使用以下代码将商店设置为admin。
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
答案 1 :(得分:0)
我遇到同样的问题并尝试更新以下代码
require 'app/Mage.php';
Mage::app('admin')->setUseSessionInUrl(false);
//replace your own orders numbers here:
$test_order_id='100000001';
try{
Mage::register('isSecureArea', true);
Mage::getModel('sales/order')->loadByIncrementId($test_order_id)->delete();
Mage::unregister('isSecureArea');
echo "order #".$test_order_id." is removed".PHP_EOL;
}catch(Exception $e){
echo "order #".$test_order_id." could not be remvoved: ".$e->getMessage().PHP_EOL;
}
}
echo "complete."