无法在magento admin中的foreach中打印错误消息

无法在magento admin中的foreach中打印错误消息,foreach,module,admin,messages,magento-1.13,Foreach,Module,Admin,Messages,Magento 1.13,您好,我在销售订单网格中添加了一个新的mas操作,该操作允许创建批量发票。 为此,我的控制文件是 <?php class Iclp_Batchupdate_IndexController extends Mage_Adminhtml_Controller_Action public function batchinvoiceAction () { $already = " already "; $refererUrl = $

您好,我在销售订单网格中添加了一个新的mas操作,该操作允许创建批量发票。 为此,我的控制文件是

<?php
   class Iclp_Batchupdate_IndexController extends Mage_Adminhtml_Controller_Action


  public function batchinvoiceAction ()
   {
        $already = " already ";       
        $refererUrl = $this->getRequest()->getServer('HTTP_REFERER');
        $this->loadLayout();
        $this->renderLayout();
        $orderIds = explode(",",$this->getRequest()->getParam('order_ids'));

        foreach ($orderIds as $orderIdss) {
        $order = Mage::getModel('sales/order')->load($orderIdss);
        //echo $orderIdss ."<br/>";
        //echo "already ".$order->getStatusLabel();
        try
        {
            if(!$order->canInvoice())
                        {
                echo   Mage::getSingleton('core/session')->addError($orderIdss.$already.$order->getStatusLabel());


            }
                $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
                    if (!$invoice->getTotalQty()) {
                    Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));
                    }
            $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
            $invoice->register();
            $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
            $transactionSave->save();
            $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();
            //echo "Invoice are created";
        }
        catch (Mage_Core_Exception $e) {

        }

    }

                //A Success Message
             Mage::getSingleton('core/session')->addSuccess("Some success message");

            //A Error Message
             Mage::getSingleton('core/session')->addError("Some error message");

            //A Info Message (See link below)
             Mage::getSingleton('core/session')->addNotice("This is just a FYI message...");

            //These lines are required to get it to work
            session_write_close();


        $this->getResponse()->setRedirect($refererUrl);

   }



}

但底部的错误消息显示正确。此外,如果我使用front操作扩展类,那么它也会打印foreach消息。请建议我在哪里出错

当您在adminhtml中时,您应该将错误和消息添加到
admintml/session
而不是
core/session
。这将正确显示消息。您不需要
session\u write\u close()。也不需要回显消息,重定向后应由Magento自动处理

也不需要调用
$this->loadLayout()
$this->renderLayout()因为您正在最后重定向

最后,关于重定向,您不应该自己阅读推荐人,Magento可以更可靠地为您阅读推荐人。只需使用
$this->\u redirectReferer()方法而不是
$this->getResponse()->setRedirect($refererUrl)

if(!$order->canInvoice())
                        {
                echo Mage::getSingleton('core/session')->addError($orderIdss.$already.$order->getStatusLabel());


            }