【问题标题】:Magento get quote id from observerMagento 从观察者那里获取报价 ID
【发布时间】:2015-05-05 07:20:55
【问题描述】:
我正在尝试从管理员创建订单(用于电话订单)。在这种情况下,我需要从观察者那里获取报价 ID。我在观察者下面试过
sales_quote_save_after
sales_model_service_quote_submit_success
sales_quote_product_add_after
我试图用这个来获取 id,
$id = $observer->getQuoteId();
并且
我试图打印那个报价项目,但我得到的是空值。
谁能帮我解决这个问题?
【问题讨论】:
标签:
php
magento
observers
【解决方案1】:
在 sales_quote_product_add_after 事件中,quote_item 被传递给观察者。
要从这个观察者那里得到报价和 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 中通过 quote /p>
protected $_eventObject = 'quote';
然后在你的观察者中你可以得到它:
public function yourMethod($observer)
{
$quote= $observer->getEvent()->getQuote();
$id = $quote->getId();
}
【解决方案2】:
我使用以下解决方案解决了这个问题,
我用了下面的事件
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();