2010-09-08 184 views
3

我是Magento的新手,但我認爲直到今天我都掌握了它。這是我的問題。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並加載它,但我似乎無法找到一種方法來做到這一點。

有沒有人有過這方面的經驗,也許有解決辦法?

回答

2

問題在於您正在觀察的事件。由於Magento會話此時尚未初始化,因此Cookie具有與核心不同的名稱。

使用controller_action_predispatch從請求中設置一些會話數據。