Я работаю над настраиваемым модулем администратора magento с сетками. Когда вы добавляете новую запись, я выполняю выборочную проверку и выдаю ошибку (когда &, если это происходит) с использованием метода Mage::getSingleton('adminhtml/session')->addError()
.adminhtml/session в Magento addError не отображается после перенаправления
Сообщение об ошибке, которое я установил, не появляется, когда я перенаправляю обратно в форму редактирования.
Это мое save
действие на контроллере сетки:
public function saveAction()
{
// Look For HTTP Post
if ($data = $this->getRequest()->getPost())
{
// Load Data
$manualOrderSyncModel = Mage::getModel('mycompany_mymodule/manualordersync')
->setData($data)
->setId($this->getRequest()->getParam('id'));
// Anticipate Errors
try
{
// Get If Order Number Is Valid
$order = Mage::getModel('sales/order')->load($manualOrderSyncModel->getOrderNumber(), 'increment_id');
if (null === $order->getId())
throw new Exception('No such order exists in the system. Check that order number.');
// Check If This Order Already Exists In Queue
$existingManualOrderSyncModel = Mage::getModel('mycompany_mymodule/manualordersync')
->load($manualOrderSyncModel->getOrderNumber(), 'order_number');
if (null !== $existingManualOrderSyncModel->getId())
{
// Update Existing Entry
$existingManualOrderSyncModel
->setCreatedAt(now())
->setCreatedBy(Mage::getSingleton('admin/session')->getUser()->getUsername())
->setIsSynced(Mycompany_Mymodule_Model_Yesno::NO)
->save();
}
else
{
// Update Timestamps
if ($manualOrderSyncModel->getCreatedAt() == NULL) {
$manualOrderSyncModel
->setCreatedAt(now())
->setCreatedBy(Mage::getSingleton('admin/session')->getUser()->getUsername());
}
$manualOrderSyncModel->save();
}
// Set Success
Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Manual order sync updated.'));
Mage::getSingleton('adminhtml/session')->setManualordersyncData(false);
// Handle Redirect
$this->_redirect('*/*/');
return;
}
catch (Exception $e)
{
// Error
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setManualordersyncData($data);
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
return;
}
}
// Error
Mage::getSingleton('adminhtml/session')->addError($this->__('Invalid request - unable to find manual order sync to save.'));
$this->_redirect('*/*/');
}
я заметил, проблема возникает только когда я делаю это:
// Error
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setManualordersyncData($data);
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
return;
Однако, если установить ошибку и перенаправить обратно как показано на рисунке, сообщение об ошибке показывает:
// Error
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setManualordersyncData($data);
$this->_redirect('*/*/');
return;
Это не id потому что я больше не в форме редактирования, и я потерял old data
из формы. Есть какие нибудь идеи как это починить?