Como exibir erros de um controlador personalizado na página de visualização do carrinho?
-
13-12-2019 - |
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?
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