私はMagentoを初めて使用しますが、今日までそれを理解していたと思いました。これが私の問題です。
ページの読み込み時にカートにクーポンを追加するための新しいオブザーバーを作成しています。クーポンコードはURLで渡されます。私は、コードが任意の有効なURLを介して渡されることを望んでいます。
例:http:// magento /?coupon = MYCOUPON
クーポンコードを取得するために、イベント「controller_front_init_routers」をキャッチしています。
オブザーバーを操作していますが、カートにすでにアイテムがあり、クーポンコードを渡すと、カートが空のように見えます。クーポンを追加する方法は次のとおりです。
public function applyCoupon($observer){
$coupon_code = $observer->getEvent()->getData('front')->getRequest()->getParam('coupon');
if(!empty($coupon_code)){
Mage::getSingleton('checkout/session')->setData('coupon_code', $coupon_code);
Mage::getSingleton('checkout/cart')->getQuote()->setCouponCode($coupon_code)->save();
Mage::log('Coupon Code: '. $coupon_code);
}
}
Mage :: getSingleton('checkout / session')-> anything()を呼び出すと、カートのセッションが失われるようです。
現在のカートIDを取得してロードするだけでよいのではないかと思いましたが、その方法も見つからないようです。
誰かがこれを経験したことがありますか、おそらく解決策がありますか?