Pergunta

Criei um controlador personalizado para adicionar vários itens de uma visualização em grade ao carrinho, tudo de uma vez.

Funciona muito bem - o problema é que as mensagens de sucesso e de erro não estão sendo exibidas na página de visualização do carrinho.

Aqui está o controlador:

<?php

    class BigBlockStudios_UpdateCart_ManageController extends Mage_Core_Controller_Front_Action {

        // add multiple products to the cart
        public function multipleProdAddAction() {

            $redirect = isset($_POST['redirect']) ? $_POST['redirect'] : 'checkout/cart';

            $success = '';

            $errors = '';

            $cart = Mage::helper('checkout/cart')->getCart();

            $items = $_POST['data'];

            foreach($items as $key => $item){

                $sku = $item['sku'];

                $qty = $item['qty'];

                $id = Mage::getModel('catalog/product')->getIdBySku($sku);

                if(!$id || $qty <= 0) {

                    unset($items[$key]);

                }else{

                    try {

                        $params = array('qty' => $qty);

                        $id = Mage::getModel('catalog/product')->getIdBySku($sku);

                        $product = Mage::getModel('catalog/product')->load($id);

                        $cart->addProduct($product, $params);

                        $success .= $product->getName(). " is successfully added into cart <br />";

                    }catch(Exception $e) {

                        $errors .= $e->getMessage() . '<br />';

                    }

                }

            }

            $cart->save();

            if(strlen($success) > 1) {
                Mage::getSingleton('core/session')->addSuccess(Mage::helper('checkout')->__($success));
            }

            if(strlen($errors) > 1){
                Mage::getSingleton('core/session')->addError(Mage::helper('checkout')->__($errors));
            }

            $this->_redirect($redirect);

        } // multipleProdAddAction()

    } // controller

?>

A página de visualização do carrinho está exibindo mensagens. Se eu adicionar um item de uma página de produto padrão, recebo a mensagem de sucesso.

Qual é a maneira correta de fazer isso?

Foi útil?

Solução

Agora você definiu a mensagem core/session.Tem que definir a mensagem checkout/session para obtê-lo na página de checkout.

Mage::getSingleton('checkout/session')->addError(Mage::helper('checkout')->__($errors));

Magento definiu a mensagem na sessão de checkout ao adicionar um produto ao carrinho.

Consulte isto arquivos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top