0

顧客登録時に(バックエンドで選択された)商品をカートに追加する必要があります。私はこれをしました:

$product = Mage::getModel('catalog/product')
                            ->setStoreId(Mage::app()->getStore()->getId())
                            ->load(154);

$cart = Mage::getSingleton('checkout/cart');
$cart->addProduct($product, 1)->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

createPostAction() の AccountController.php で。

しかし、それは表示されていませんが、顧客が何かを購入するたびにカートに追加されます. 私は何か悪いことをしていますか...?

-前もって。

4

1 に答える 1

0

問題は、セッション内の見積もりオブジェクトがすでに合計を収集しており、カートが保存されたときに再度収集しないことです。このため、見積もりアイテムが正常に追加されて保存された場合でも、見積もりの​​アイテム数はゼロです。次のようにコードを変更します。

$cart->product($product, 1);
$cart->getQuote()->setData('totals_collected_flag', false);
$cart->save();

そして、これで問題は解決するはずです。

customer_register_success提案:イベントをリッスンするオブザーバーにこの機能を実装する方がよいのではないでしょうか?

于 2013-02-18T11:19:09.180 に答える