无法在magento admin中的foreach中打印错误消息
您好,我在销售订单网格中添加了一个新的mas操作,该操作允许创建批量发票。 为此,我的控制文件是无法在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 = $
<?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());
}