首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento sales_order_place_before $observer getevent空

Magento sales_order_place_before $observer getevent空
EN

Stack Overflow用户
提问于 2015-09-28 09:42:16
回答 2查看 4K关注 0票数 2

我有以下观察员方法:

代码语言:javascript
复制
public function ModifyOrderECC(Varien_Event_Observer $observer)
{
    //sales_order_place_before
    Mage::log('ECC!! = ModifyOrderECC has been called successfully - event/array-5', null, 'mylog.log');
    $cart = $observer->getEvent()->getCart();
    try{
        if($cart != NULL)
        {
            Mage::log('$cart contains data!', null, 'mylog.log');

            foreach ($cart->getItems() as $item) {
                $getID = $item->getProduct()->getId();
                $productName = $item->getProduct()->getName();
                $productPrice = $item->getProduct()->getPrice();
                $quantity = (string)$item->getProduct()->getQtyOrdered();

                Mage::log('ID: '.$getID, null, 'mylog.log');
                Mage::log('Name: '.$productName, null, 'mylog.log');
                Mage::log('Price: '.$productPrice, null, 'mylog.log');
                Mage::log('Qty: '.$quantity, null, 'mylog.log');
            }
        }else
        {
            Mage::log('sorry Cart is null :(', null, 'mylog.log');
        }

    }catch(Exception $e)
    {
        Mage::log($e->getMessage());
        Mage::log('error = '.$e->getMessage(), null, 'mylog.log');
    }

}

然而,getCart事件是空的,我也尝试了getCart引用,这也是空的。我需要从事件中获取购物车的内容,以查看它创建了哪些内容。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-28 10:11:15

根据as,sales_order_place_before事件它只提供Order对象,并允许直接提供引用对象。

您想要从这个事件中获得quote object,那么您需要从Order object获得quote id,然后使用quote id you can get quote object

代码语言:javascript
复制
 public function ModifyOrderECC(Varien_Event_Observer $observer)
    {
        //sales_order_place_before


        $QuoteID=$observer->getEvent()->getOrder()->getQuoteId();
    $quoteObject=Mage::getModel('sales/quote')->load($QuoteID);
...
    }
票数 3
EN

Stack Overflow用户

发布于 2015-09-28 10:00:49

通过查看order类(第1113行),该事件为您提供了一个完整的cart实例,而不是cart实例。

如果要检索cart,请执行以下操作:

代码语言:javascript
复制
$cart = Mage::getSingleton('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
    // do something
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32819944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档