结账成功后,Magento会自动导出文件

时间:2013-06-12 14:48:15

标签: magento csv export

我最近安装了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文件中实现这个..

有人知道如何甚至更好,知道一种不同的方法来实现这一目标吗?

由于

1 个答案:

答案 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的方式,因为它可能非常大。

至于实际逻辑,由于你提供了三行代码,因此很难建议你,但这应该是相当简单的。