2014-05-18 134 views
0

我想要顯示來自控制器的消息以在magento中查看。 在控制器我有如何顯示來自控制器的消息以在magento中查看?

$arrError=Mage::getModel('advert/advert')->isValid(array('step1','step2')); 
     if (!empty($arrError)) { 
      $strReturnPath = $arrError['return_path']; 
      unset($arrError['return_path']); 
      foreach ($arrError as $strError) { 
       Mage::getSingleton('customer/session')->addError($strError); 
       //var_dump($strError); 

      } 

      $this->_redirect($strReturnPath); 
     } 

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

     $this->renderLayout(); 

,並鑑於我有

<div id="messages_product_error_view"> 
    <?php 

     Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); 
     echo Mage::app()->getLayout()->getMessagesBlock()->toHtml(); 
    ?> 
</div> 

在控制器當我做了我的var_dump可以看到錯誤消息。使用重定向時,頁面會重定向到視圖頁面。不過,在div中我希望顯示消息。 並沒有顯示請請幫忙嗎?

回答

1

我認爲_redirect()控制器中的方法不會停止腳本執行。它只設置重定向頭。因爲它仍然處理加載佈局,初始化佈局消息並呈現它。這將使magento在同一個進程中讀取消息,並在實際重定向之前將其清除。嘗試調用_redirect()方法

$this->getResponse()->sendResponse(); 

之後加入該代碼或以這種方式重新排列代碼:

if (!empty($arrError)) { 
     $strReturnPath = $arrError['return_path']; 
     unset($arrError['return_path']); 
     foreach ($arrError as $strError) { 
      Mage::getSingleton('customer/session')->addError($strError); 
      //var_dump($strError); 

     } 

     $this->_redirect($strReturnPath); 
    } 
else { 
    $this->loadLayout(); 
    $this->_initLayoutMessages('customer/session'); 

    $this->renderLayout(); 
} 
+0

謝謝..試過這兩個aka試圖添加發送響應,也通過重新排列..但是,在這兩種情況下,我最終與以前一樣。該消息不會顯示在頁面1上,即傳遞重定向的頁面。請任何幫助 –

0

當您在視圖中調試Mage :: getSingleton('customer/session') - > getMessages(true)時,它是否包含任何消息?

如果您想更好地瞭解Magento通知,請點擊這裏。here

0
Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); 

被重置我的會議。結果,我丟失了這些信息。扯淡!該死的!開溜!

無論如何,通過刪除線我有解決方案的工作。

相關問題