Проблемы с глобальными сообщениями в Magento

Мои знания в 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, где я вижу сообщение об успехе.

Где я был не прав?

0

Решение

Пожалуйста, проверьте ваш контроллер. Если вы визуализируете макет, вы должны включить в свой код следующий код.

$this->_initLayoutMessages('customer/session');

Итак, ваши действия должны быть такими:

$this->loadLayout();
$this->_initLayoutMessages('customer/session');
$this->renderLayout();

Это может помочь вам.

3

Другие решения

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, как получить и установить

2

Ты можешь попробовать core/session вместо customer/session? Это может помочь вам.

0

Во-первых, мы настоятельно рекомендуем вам установить / настроить 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();

Надеюсь, это поможет. 🙂

0

Я нашел этот пост переполнения стека чрезвычайно полезным.

То, что сработало для меня, было комбинацией Алекса Иванова и Emipro Technologies Pvt. Ответы ООО, как показано ниже (код контроллера):

$this->loadLayout();
$this->_initLayoutMessages('core/session');
$this->renderLayout();
0
По вопросам рекламы [email protected]