我正在使用扩展程序 Blue Jalapeno Order Export 来导出订单,效果很好。我修改了一个输出格式选项以供我们的履行公司使用,它对我们来说效果很好。
现在我们需要另一个使用不同格式的导出。我已经确定了格式。我的问题是在订单网格中调用新的 massAction。这可以在下拉菜单中显示新动作#2。
class Webshopapps_Ordermanager_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
protected function _prepareMassaction()
{
parent::_prepareMassaction();
if (Mage::getStoreConfig("order_export/export_orders/active")) {
$this->getMassactionBlock()->addItem('ordermanager', array(
'label'=> Mage::helper('sales')->__('Export orders IFS'),
'url' => $this->getUrl('*/sales_order_export/csvexport'),
));
}
if (Mage::getStoreConfig("order_export/export_orders2/active")) {
$this->getMassactionBlock()->addItem('ordermanager2', array(
'label'=> Mage::helper('sales')->__('Export orders QB'),
'url' => $this->getUrl('*/sales_order_export/qbexport'),
));
}
}
}
首先,工作出口仍然有效。第二个确实出现并允许我选择并提交它,但行为不同。第一个的 url 从未更改(/admin/sales_order/index),但会弹出下载框。第二个 url 更改为 admin/sales_order_export/qbexport/ 并呈现白屏
我想做的是在同一个控制器中调用不同的方法。或者将参数传递给一种方法。
我正在尝试什么:我在用于第一个 addItem 的同一控制器中添加了一个方法。
class Webshopapps_Ordermanager_Sales_Order_ExportController extends Mage_Adminhtml_Controller_Action
{
public function csvexportAction() // First working mass action
{
$orders = $this->getRequest()->getPost('order_ids', array());
switch(Mage::getStoreConfig('order_export/export_orders/output_type')){
case 'Multi':
$file = Mage::getModel('webshopapps_ordermanager/export_multi')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
case 'Standard':
$file = Mage::getModel('webshopapps_ordermanager/export_csv')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
}
}
public function qbexportAction()
{
$orders = $this->getRequest()->getPost('order_ids', array());
switch(Mage::getStoreConfig('order_export/export_orders/output_type2')){
case 'Qb':
$file = Mage::getModel('webshopapps_ordermanager/export_qb')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
case 'Standard':
$file = Mage::getModel('webshopapps_ordermanager/export_csv')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
case 'Mscrm':
$file = Mage::getModel('webshopapps_ordermanager/export_mscrm')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
}
}
还有 config.xml。我已经看过并且不明白是什么让第一次大规模调用正确的控制器和动作,但不是第二次。我的理解中的一个小故障,我需要纠正。
<config>
<modules>
<Webshopapps_Ordermanager>
<version>0.0.1</version>
</Webshopapps_Ordermanager>
</modules>
<global>
<models>
<webshopapps_ordermanager>
<class>Webshopapps_Ordermanager_Model</class>
</webshopapps_ordermanager>
</models>
<helpers>
<webshopapps_ordermanager>
<class>Webshopapps_Ordermanager_Helper</class>
</webshopapps_ordermanager>
</helpers>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>Webshopapps_Ordermanager_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Webshopapps_Ordermanager before="Mage_Adminhtml">Webshopapps_Ordermanager</Webshopapps_Ordermanager>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<adminhtml>
<translate>
<modules>
<Webshopapps_Ordermanager>
<files>
<default>Webshopapps_Ordermanager.csv</default>
</files>
</Webshopapps_Ordermanager>
</modules>
</translate>
<default>
<ordermanager>
<condition_name>order_export</condition_name>
</ordermanager>
</default>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<order_export>
<title>Export Orders</title>
</order_export>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>