error-handling - Magento addError中的adminhtml/session在重定向后未显示

标签 error-handling grid magento-1.9 adminhtml

我正在开发一个带有网格的自定义 magento 管理模块。当您添加新条目时,我使用 Mage::getSingleton('adminhtml/session')->addError() 执行自定义验证并抛出错误(如果发生)方法。

当我重定向回编辑表单时,我设置的错误消息没有出现。

这是我的save对网格 Controller 的操作:

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;

这并不理想,因为我不再处于编辑表单中并且丢失了 old data从表格。有想法该怎么解决这个吗?

最佳答案

自己亲身经历过这个问题,令人失望的是这个问题没有收到任何回复

关于error-handling - Magento addError中的adminhtml/session在重定向后未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34624093/

相关文章:

java网格/板for循环: what row is empty and nearest?

.net - 甘特图或分层网格

JavaScript 不适用于表单提交中的输入

tensorflow - 如何为新类别重新训练Inception的最后一层

exception-handling - 用于报告和处理 clojure 代码中的错误的 JVM 异常有哪些替代方法?

asp-classic - ADODB.Recordset错误 '800a0bb9'

java - Struts 2 当用户插入不存在的 Action 时该怎么办

android - 使用新的 GridLayout 创建 3*3 网格

mysql - 调用未定义的方法 Varien_Db_Statement_Pdo_Mysql::addColumn()

php - magento 1.9.x 'position' 列