我最近安装了Magento模块以CSV格式导出订单,但我需要让Magento在结帐后直接导出我需要的文件。
我看到模块使用这种代码来实现导出:
$file = Mage::getModel('bluejalappeno_orderexport/export_csv')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
$this->_redirect('*/*/');
我尝试将相同的代码粘贴到Success.phtml中,但是我得到一个错误,说“无效的方法”,我做了一个研究,发现调用该方法的类必须扩展类“Mage_Adminhtml_Controller_Action”,但我不知道如何在phtml文件中实现这个..
有人知道如何甚至更好,知道一种不同的方法来实现这一目标吗?
由于
答案 0 :(得分:0)
对于另一种方法,您应该使用观察者附加到订单成功事件,如果您使用单页结帐,checkout_onepage_controller_success_action
似乎是一个很好的方法。查看更多@ http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/
要使用观察者,您需要创建自定义模块。
添加到您的config.xml
<global>
...
<events>
<checkout_onepage_controller_success_action>
<observers>
<namespace_modulename_observer>
<type>model</type>
<class>Namespace_Modulename_Model_Observer</class>
<method>exportCsvOnCheckout</method>
</namespace_modulename_observer>
</observers>
</checkout_onepage_controller_success_action>
</events>
...
</global>
在自定义模块中创建Model/Observer.php
。
<?php
class Invent_Healthystart_Model_Observer
{
public function exportCsvOnCheckout($observer)
{
..put your logic here..
Mage::log($observer); // $observer has varying amounts of access to models depending on the event
}
}
现在,当您成功完成订单时,它将触发将触发您的方法的观察者,如果您的逻辑正确,它将触发CSV导出。
注意_prepareDownloadResponse
是我认为的管理员特定方法,因此您无法在前端使用它。
如果订单处理超时,首先要检查的是您使用$observer
的方式,因为它可能非常大。
至于实际逻辑,由于你提供了三行代码,因此很难建议你,但这应该是相当简单的。