我创建了事件checkout_cart_product_add_before: http://markshust.com/2012/08/27/create-checkout_cart_product_add_before-observer-magento
当我这样做时,getQuoteItem()似乎不可用,所以我无法获得添加到购物车的产品数量。当我使用_after方法时,我可以使用:
public function checkStock2($observer) {
Mage::log("Check stock before");
$request = $observer->getQuoteItem();
Mage::log("q in order = " .$request['qty'] ."");
}
然而,在我之前,我无法到达getQuoteItem,因为它还没有。有没有办法让用户尝试添加到购物车中的产品数量?
谢谢!
答案 0 :(得分:7)
如果您实施了链接的观察者,那么您将缺少所需的信息。 您必须在dispatchEvent中添加请求,以便检查用户选择的内容:
public function addProduct($productInfo, $requestInfo=null)
{
$product = $this->_getProduct($productInfo);
$request = $this->_getProductRequest($requestInfo);
Mage::dispatchEvent('checkout_cart_product_add_before', array(
'product' => $product,
'request' => $request
));
return parent::addProduct($productInfo, $requestInfo);
}
然后,您将能够使用以下方法检索观察者中的用户数量:
$observer->getEvent()->getRequest()->getQty();
->getRequest()
方法指的是dispatchEvent的“request”参数的魔法getter。