Я новичок в 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') -> any (), я теряю сессию для корзины.
Я подумал, что, возможно, мне просто нужно получитьтекущий идентификатор корзины и загрузите его, но я тоже не могу найти способ сделать это.
Кто-нибудь имел опыт в этом, может быть, есть решение?