Magento从观察者

时间:2015-05-05 07:20:56

标签: php magento observers

我尝试从管理员创建订单(用于电话订单)。在那种情况下,我需要从观察者处获得引用ID。我试过下面的观察者

sales_quote_save_after
sales_model_service_quote_submit_success
sales_quote_product_add_after 

我尝试使用此功能获取id,

$id = $observer->getQuoteId();

和 我试图打印那些引用项目,但我得到空值。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

如果 sales_quote_product_add_after quote_item 会传递给观察者。 要从此Observer获取引用和id:

public function yourMethod($observer)
{
   $quoteItem = $observer->getEvent()->getQuoteItem();
   $quote = $quoteItem->getQuote();
   $id = $quote->getId();
}

如果 sales_model_service_quote_submit_success 您已通过订单报价

public function yourMethod($observer)
{
   $order= $observer->getEvent()->getOrder();
   $quote= $observer->getEvent()->getQuote();
   $id = $quote->getId();
}

如果 sales_quote_save_after ,您已通过引用,因为在 app / code / core / Mage / Sales / Model / Quote.php < / p>

protected $_eventObject = 'quote';

然后在你的观察者中你可以得到它:

public function yourMethod($observer)
{
   $quote= $observer->getEvent()->getQuote();
   $id = $quote->getId();
}

答案 1 :(得分:1)

我使用以下解决方案修复此问题, 我用下面的事件

sales_quote_item_set_product

实际上我试图为可配置产品定价相应的相关产品的价格。我的观察者是,

$event      = $observer->getEvent();
                $quote_item = $event->getQuoteItem();
                $storeId    = $quote_item->getStoreId();

            if(Mage::app()->getStore()->isAdmin()) {

                $item       = $observer->getQuoteItem();
                $product    = $observer->getProduct();
                $sku        = $product->getSku();
                $productDetails     =  Mage::getModel('catalog/product')
                            ->setStoreId($storeId)
                            ->loadByAttribute('sku',$sku);

                $price      = $productDetails->getPrice();
                $sprice     = $productDetails->getFinalPrice();

                $item->setOriginalCustomPrice($sprice);
                $item->setOriginalPrice($price);

                }

                $quote = Mage::getSingleton('adminhtml/session_quote')->getQuote();