Мои знания в magento не такие глубокие, поэтому у меня возникли проблемы с выводом глобальных сообщений magento.
Я создал свой модуль. На странице индекса моего модуля (маршрут / ваучеры) у меня была форма. Таким образом, с помощью POST я отправляю данные в контроллер (маршрут такой же (/ voucehrs)), где я проверяю данные:
if(!isset($post["to_name"]) || !$post['to_name'])
{
Mage::getSingleton('customer/session')->addError($this->__('Please enter "To Name" information'));
$errors = 1;
}
...
if(!$errors)
{
Mage::getSingleton('customer/session')->addSuccess($this->__('Your order is successfully saved and now is in process'));
}
В шаблоне я использую <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
но ничего не происходит, хотя я сбросил переменную Session, где я вижу сообщение об успехе.
Где я был не прав?
Пожалуйста, проверьте ваш контроллер. Если вы визуализируете макет, вы должны включить в свой код следующий код.
$this->_initLayoutMessages('customer/session');
Итак, ваши действия должны быть такими:
$this->loadLayout();
$this->_initLayoutMessages('customer/session');
$this->renderLayout();
Это может помочь вам.
Notice
Mage::getSingleton('core/session')->addNotice('Notice message');
Success
Mage::getSingleton('core/session')->addSuccess('Success message');
Error
Mage::getSingleton('core/session')->addError('Error message');
Warning (admin only)
Mage::getSingleton('adminhtml/session')->addWarning('Warning message');
Ошибки вывода из контроллера
public function sendAction()
{
try
{
$mail = new Zend_Mail();
$mail->send();
}
catch (Exception $e)
{
Mage::getSingleton('core/session')->addError('Error sending mail');
}
$this->loadLayout();
$this->renderLayout();
}
Больше информации для сессии в mageno, как получить и установить
Ты можешь попробовать core/session
вместо customer/session
? Это может помочь вам.
Во-первых, мы настоятельно рекомендуем вам установить / настроить Xdebug — этот инструмент сэкономит вам много времени.
Что касается вопроса, попробуйте использовать
Mage::getSingleton('customer/session')
вместо
Mage::getSingleton('core/session')
Если это не работает, вы можете попробовать:
// after post form
$this->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton(‘customer/session’)->getMessages(true));
// when display
$this->getLayout()->getMessagesBlock()->getGroupedHtml();
Надеюсь, это поможет. 🙂
Я нашел этот пост переполнения стека чрезвычайно полезным.
То, что сработало для меня, было комбинацией Алекса Иванова и Emipro Technologies Pvt. Ответы ООО, как показано ниже (код контроллера):
$this->loadLayout();
$this->_initLayoutMessages('core/session');
$this->renderLayout();