2013-12-12 9 views
5

カートに商品を追加しようとしていますが、カートは空です。私はincremantingさ$cart->getItemsQty()私の数量を印刷するとき はここに私のコードプログラムによってショッピングカートに入れる - 空のカート

try{ 
    $product_model = Mage::getSingleton('catalog/product'); 

    // Load product 
    $_sku = "1-574#AD-B00731"; 
    $my_product_id = $product_model->getIdBySku($_sku); 
    $my_product  = $product_model->load($my_product_id); 
    $qty_value = 1; 

    // Add to cart 
    $cart = Mage::getModel('checkout/cart'); 
    $cart->init(); 
    $cart->addProduct($my_product, array('qty' => $qty_value)); 
    $cart->save(); 
    print_r($cart->getItemsQty().PHP_EOL); 
    Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 
    var_dump("working"); 
} 
catch(Exception $e){ 
    return $e->getMessage(); 
} 

だが、私のカートはまだ空です。私はそれが正しく動作していないMage::getSingleton('checkout/session')->setCartWasUpdated(true);だと思う。

何が問題なのでしょうか?

編集1:動作していないURLクエリー経由して、私は理由form_key

答えて

1

のMagentoの1.8.0を使用するには、

$cart = Mage::getModel('checkout/cart'); 

$cart = Mage::getSingleton('checkout/cart'); 

へカートを変更しようとしていますあなたが1人のユーザーのためにあなたの店に1つのカートしかなく、それを使用したいすべての人が新しいオブジェクトを作成せずにgetSingletonとして呼び出すことができるからです。 Mage :: getModel( 'checkout/cart')を使用すると、新しいオブジェクトが作成されます。あなたはDBに見積もりを保存することができますが、これは現在アクティブな顧客カートではありません。

+0

お客様のカートを取得するにはどうすればよいですか? – Camital

+2

提案したとおりにスクリプトを変更しましたか?現在のカートを利用するには、Mage :: getSingleton( 'checkout/cart') - > getQuote();を使用します。またはMage :: getSingleton( 'checkout/session') - > getQuote(); – freento

+0

はい私はして、私のカートはまだ空です – Camital

1

Itemcollectionのitemcacheを更新する必要があります。これによっても見積もりモデルが削除されますので、あとで追加する必要があります

$cart->getItems()->clear(); 
$cart->getItems()->setQuote($cart->getQuote());