私はそのようなオブザーバーを持っています
<events>
<sales_quote_add_item>
<observers>
<reservation_observer_order_save_before1>
<type>singleton</type>
<class>Mageec_Total_Model_Observer</class>
<method>updatePrice</method>
</reservation_observer_order_save_before1>
</observers>
</sales_quote_add_item>
</events>
関数 updatePrice は以下のとおりです。
public function updatePrice($observer){
$event = $observer->getEvent();
$quote_item = $event->getQuoteItem();
if ($quote_item->getProductType() == "virtual"){
$new_price = (float)$quote_item->getProduct()->getPrice();
$quote_item->setOriginalCustomPrice($new_price);
$qty = Mage::getSingleton('checkout/cart')->getSummaryQty(); //return 0
$qty = $quote_item->getQty(); //return 0 too
Mage::log(print_r($qty,true));
$quote_item->setTotalPrice( $new_price * $qty );
}
}
カートの数量または見積もりアイテムの数量を取得できません。カートオブジェクトがいっぱいになる前にこのオブザーバーが実行されるためだと思います。この場合、どこで数量を取得できますか?