4

我创建了事件 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 时,因为它还没有。有没有办法获得用户尝试添加到购物车的产品数量?

谢谢!

4

1 回答 1

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 的“请求”参数的魔术 getter。

于 2012-11-26T22:54:21.280 回答