我希望活动sales_order_place_before
进行一些自定义验证并取消下订单。
我尝试了什么:
public function saleOrderPlaceBefore(Varien_Event_Observer $observer){
if(!VerificationSuccess()){
RemoveProduct();
Mage::throwException(Mage::helper('sales')->__('Product has expired.'));
//how to redirect after error?
}
}
此方法的问题是产品已从购物车中移除,但错误显示为警告框,我想将用户重定向到某个自定义页面。
在此之后,我尝试直接重定向到自定义页面,例如:
public function saleOrderPlaceBefore(Varien_Event_Observer $observer){
if(!VerificationSuccess()){
RemoveProduct();
$session = Mage::getSingleton('checkout/session');
$session->addError(Mage::helper('checkout')->__("Product expired!"));
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('product-error'));
Mage::app()->getResponse()->sendResponse();
exit;
}
}
使用此代码,我收到错误:
User Error: Some transactions have not been committed or rolled back in PathToMagento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 4039
有关如何设法取消下订单,删除过期产品以及从此观察者重定向(我还可以使用其他事件)到自定义页面的任何想法吗?