2016-01-06 3 views
1

Я работаю над настраиваемым модулем администратора 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 из формы. Есть какие нибудь идеи как это починить?

ответ

0

Испытывая эту проблему сам, разочаровывающ что этот вопрос не получил никакие ответы