0

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

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

谢谢

4

1 回答 1

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因为它可能非常大。

至于实际的逻辑,因为你已经给我们提供了三行代码,所以很难给你建议,但它应该是相当微不足道的。

于 2013-06-12T16:41:46.187 回答