質問

Checkout_cart_product_add_afterで発射するオブザーバーを作成しました。オブザーバーでは、このような量を設定します。

$item->setQty($quantity); 

その製品のカートに既にカートにある数量を取得して、製品の数量が代わりに更新されるか、上書きされます。しかし、カートで製品数量を取得しようとすると(mage :: helper( 'checkout/cart'))、おそらく更新数量コードがすでに起動しているため、「新しい」量を取得します。

製品のカート量を取得するにはどうすればよいですか?

前もって感謝します、

Joost

編集:

これはオブザーバーの完全なコードです:

public function modifyPrice(Varien_Event_Observer $obs)
    {

        $item = $obs->getQuoteItem();
        $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
        $price = $this->_getPrice($item);
        $item->setCustomPrice($price);
        $item->setOriginalCustomPrice($price);

        $quantity = $this->_getQuantity($item);
        $item->setQty($quantity);

        $item->getProduct()->setIsSuperMode(true);
    }

    protected function _getPrice(Mage_Sales_Model_Quote_Item $item)
    {
        $price = 0;

        Mage::app()->getRequest()->getPost();

        $qtydropdownbox = Mage::app()->getRequest()->getParam('qtydropdownbox');
        $prices = $item->getProduct()->getData('qty_dropdownbox_prices');
        $quantities = $item->getProduct()->getData('qty_dropdownbox_quantities');

        $array_prices = explode(';', $prices);
        $array_quantities = explode(';', $quantities);
        $price = $array_prices[$qtydropdownbox] / $array_quantities[$qtydropdownbox];

        return $price;
    }

    protected function _getQuantity(Mage_Sales_Model_Quote_Item $item)
    {
        $quantity = 0;

        Mage::app()->getRequest()->getPost();

        $qty = Mage::app()->getRequest()->getParam('qty');
        $qtydropdownbox = Mage::app()->getRequest()->getParam('qtydropdownbox');
        $quantities = $item->getProduct()->getData('qty_dropdownbox_quantities');

        $array_quantities = explode(';', $quantities);
        $quantity = $array_quantities[$qtydropdownbox] * $qty;

        return $quantity;
    }
役に立ちましたか?

解決

私はあなたが何を達成したいのか理解していませんが、古い量を得るには手遅れであり、Origdataさえ上書きされます(私は思う)が、それをチェックしてください。

最も簡単なのはフックすることだと思います quote_item_load_after 数量を追加して、後で$ QUOTIITEM-> SETMYPERSONALQTY($ QUOTEITEM-> GETQTY())のように読み取るだけです

他のヒント

イベントを使用できます sales_quote_product_add_after 新しいアイテムが保存される前にトリガーされるため、使用できるように $item->getOrigData('qty') 元の数量を取得します。

イベントには1つのパラメーターがあります。 items これは、この製品用に生成されたすべての単一の引用項目の配列です。シンプルな製品の場合、これは常に1つのアイテムです。バンドルと構成可能な製品の場合、メイン製品とその子供のアイテムであり、親は常に最初のアイテムです。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top