Корзина Magento: Проверьте, нет ли товаров в корзине - PullRequest
3 голосов
/ 09 сентября 2010

Я новичок в 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 (), я теряю сессию для корзины.

Я подумал, что, возможно, мне просто нужно получитьтекущий идентификатор корзины и загрузите его, но я тоже не могу найти способ сделать это.

Кто-нибудь имел опыт в этом, может быть, есть решение?

1 Ответ

2 голосов
/ 10 ноября 2010

Проблема в том, что вы наблюдаете.Поскольку сеанс Magento не был инициализирован в тот момент, поэтому имя файла cookie отличается от имени основного.

Используйте controller_action_predispatch для настройки некоторых данных сеанса из запроса.

...