Как отобразить ошибки пользовательского контроллера на странице просмотра корзины?


Я создал пользовательский контроллер для добавления нескольких элементов из представления сетки в корзину одновременно.

Работает просто отлично - проблема в том, что сообщения об успехе и ошибках не отображаются на странице просмотра корзины.

Вот контроллер:

<?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

?>

На странице просмотра корзины отображаются сообщения, если я добавляю товар со страницы продукта по умолчанию, я получаю сообщение об успешном выполнении.

Как правильно это сделать?

Author: Sean Kimball, 2015-09-26

1 answers

Прямо сейчас вы установили сообщение в core/session. Нужно установить сообщение в checkout/session, чтобы получить его на странице оформления заказа.

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

Magento установил сообщение в сеансе оформления заказа при добавлении товара в корзину.

Обратитесь к этим файлам

 5
Author: MeenakshiSundaram R, 2015-09-26 17:42:31