Magento的checkout_cart_product_add_before并得到补充的产品数量

lle*_*eto 4 observers magento

我创建了事件checkout_cart_product_add_before: http://markshust.com/2012/08/27/create-checkout_cart_product_add_before-observer-magento

Hoever当我做这个getQuoteItem()似乎是不可用的,所以我不能去添加到购物车的产品数量.当我使用_after方法时,我可以使用:

public function checkStock2($observer) {
  Mage::log("Check stock before");
  $request = $observer->getQuoteItem();
  Mage::log("q in order = " .$request['qty'] ."");
}
Run Code Online (Sandbox Code Playgroud)

然而,当我之前,我无法到达getQuoteItem,因为它现在还没有.有没有办法让用户尝试添加到购物车的产品数量?

谢谢!

Cét*_*tia 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);
    }
Run Code Online (Sandbox Code Playgroud)

然后,您将能够使用以下方法检索观察者中的用户数量:

$observer->getEvent()->getRequest()->getQty();
Run Code Online (Sandbox Code Playgroud)

->getRequest()方法引用dispatchEvent的"request"参数的魔术getter.