Magento结帐\u购物车\u产品\u添加\u之前,并获取添加的产品数量

Magento结帐\u购物车\u产品\u添加\u之前,并获取添加的产品数量,magento,observers,Magento,Observers,我创建了事件签出\购物车\产品\添加\之前: 无论何时,getQuoteItem()似乎不可用,因此我无法获得添加到购物车的产品数量。当我使用_after方法时,我可以使用: public function checkStock2($observer) { Mage::log("Check stock before"); $request = $observer->getQuoteItem(); Mage::log("q in order = " .$request['qty

我创建了事件签出\购物车\产品\添加\之前:

无论何时,getQuoteItem()似乎不可用,因此我无法获得添加到购物车的产品数量。当我使用_after方法时,我可以使用:

public function checkStock2($observer) {
  Mage::log("Check stock before");
  $request = $observer->getQuoteItem();
  Mage::log("q in order = " .$request['qty'] ."");
}
然而,当我在之前,我无法到达getQuoteItem,因为它还不在那里。有没有办法获取用户试图添加到购物车的产品数量


谢谢

如果您实现了链接的观察者,您将丢失所需的信息。 您必须在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中的用户数量:

$observer->getEvent()->getRequest()->getQty();

->getRequest()
方法为dispatchEvent的“request”参数引用了一个神奇的getter。

嗨,Bixi,谢谢。这确实是问题所在。提示:如果有人看到这一点,请注意上面代码中以Mage::dispatchEvent开头的行比Stackoverflow显示的要长。滚动至右侧以查看所有内容。本文可能也会有所帮助: