事件观察者未获取产品详细信息
Event observer not getting product details
我在 config.xml 文件
中创建了如下所示的观察者事件
<events>
<sales_quote_add_item>
<observers>
<CustomModule_model_observer>
<type>singleton</type>
<class>CustomModule_Model_Observer</class>
<method>updatePrice</method>
</CustomModule_model_observer>
</observers>
</sales_quote_add_item>
</events>
在我的模型中我创建了 Observer.php
require_once 'Mage/Checkout/controllers/CartController.php';
class CustomModule_Observer
{
public function _construct()
{
}
public function getNewPrice()
{
$newprice = "5";
return $newprice;
}
public function updatePrice($observer)
{
$event = $observer->getEvent();
$product = $event->getProduct();// not getting any values how can i get this.
$quote_item = $event->getQuoteItem();
$new_price = $this->getNewPrice();
$quote_item->setOriginalCustomPrice($new_price);
$quote_item->save();
}
}
引用Changing the price in quote while adding product to cart: magento
您没有在 $product = $event->getProduct();
中获得任何值,因为在调度添加项目事件时未设置此对象。
请检查 Mage_Sales_Model_Quote
class 行号 939。
$item->setQuote($this);
if (!$item->getId()) {
$this->getItemsCollection()->addItem($item);
Mage::dispatchEvent('sales_quote_add_item', array('quote_item' => $item));
}
它只有 return quote_item 个对象。如果想要产品,那么您必须找到其他方式,例如:
$quote_item = $event->getQuoteItem(); // Which return quote item
$quote_item->getProduct();
我希望这对你有用谢谢。
我已经试过了,它起作用了,它给了我们产品 ID。
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item){
$productId = $item->getProductId();
$product = Mage::getModel('catalog/product')->load($productId);
// Do something
}
我在 config.xml 文件
中创建了如下所示的观察者事件<events>
<sales_quote_add_item>
<observers>
<CustomModule_model_observer>
<type>singleton</type>
<class>CustomModule_Model_Observer</class>
<method>updatePrice</method>
</CustomModule_model_observer>
</observers>
</sales_quote_add_item>
</events>
在我的模型中我创建了 Observer.php
require_once 'Mage/Checkout/controllers/CartController.php';
class CustomModule_Observer
{
public function _construct()
{
}
public function getNewPrice()
{
$newprice = "5";
return $newprice;
}
public function updatePrice($observer)
{
$event = $observer->getEvent();
$product = $event->getProduct();// not getting any values how can i get this.
$quote_item = $event->getQuoteItem();
$new_price = $this->getNewPrice();
$quote_item->setOriginalCustomPrice($new_price);
$quote_item->save();
}
}
引用Changing the price in quote while adding product to cart: magento
您没有在 $product = $event->getProduct();
中获得任何值,因为在调度添加项目事件时未设置此对象。
请检查 Mage_Sales_Model_Quote
class 行号 939。
$item->setQuote($this);
if (!$item->getId()) {
$this->getItemsCollection()->addItem($item);
Mage::dispatchEvent('sales_quote_add_item', array('quote_item' => $item));
}
它只有 return quote_item 个对象。如果想要产品,那么您必须找到其他方式,例如:
$quote_item = $event->getQuoteItem(); // Which return quote item
$quote_item->getProduct();
我希望这对你有用谢谢。
我已经试过了,它起作用了,它给了我们产品 ID。
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item){
$productId = $item->getProductId();
$product = Mage::getModel('catalog/product')->load($productId);
// Do something
}