sales_order_place_before事件重定向

时间:2016-02-19 09:09:58

标签: php magento magento-1.9

我希望活动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

有关如何设法取消下订单,删除过期产品以及从此观察者重定向(我还可以使用其他事件)到自定义页面的任何想法吗?

0 个答案:

没有答案