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