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 の「request」パラメーターのマジック ゲッターを参照します。

于 2012-11-26T22:54:21.280 に答える