Я хочу добавить пользовательское сообщение об ошибке, когда оно удовлетворяет конкретному условию. Ниже приведен код, который я написал на контроллере. Сообщение об ошибке появляется, когда я перехожу на другую страницу, однако на этой странице не отображается сообщение об ошибке.
В идеале он должен показывать сообщение об ошибке на одной странице и не хочет показывать ошибку где-либо еще.
public function testAction(){
$this->loadLayout()->_initLayoutMessages('customer/session');
if(!isset($_FILES['docname']['name']) && $_FILES['docname']['name'] == ''){
Mage::getSingleton('customer/session')->addError('Custom error message');
}
$this->renderLayout();
}
Если вы принудительно перезагрузите страницу, сообщение об ошибке будет отображаться на одной странице:
if (!isset($_FILES['docname']['name']) && $_FILES['docname']['name'] == '') {
$this->_getSession()->addError('Custom error message');
$this->_redirect('*/*/');
return;
}
Другой способ отобразить сообщение об ошибке на той же странице - это перезаписать функцию _prepareLayout() в вашем блоке:
protected function _prepareLayout() {
// IF statement
$this->getMessagesBlock()->addError('Custom error message');
// End of IF
return parent::_prepareLayout();
}