Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento在签出成功后自动导出文件_Magento_Csv_Export - Fatal编程技术网

Magento在签出成功后自动导出文件

Magento在签出成功后自动导出文件,magento,csv,export,Magento,Csv,Export,我最近安装了一个Magento模块以CSV格式导出订单,但我需要让Magento在结帐后直接导出我需要的文件 我看到模块使用这种代码进行导出: $file = Mage::getModel('bluejalappeno_orderexport/export_csv')->exportOrders($orders); $this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('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中,但我收到一个错误,错误是“Invalid method”,我做了一项研究,发现调用该方法的类必须扩展类“Mage_Adminhtml_Controller_Action”,但我不知道如何在phtml文件中实现这一点

有人知道如何或更好地知道实现这一点的不同方法吗


感谢

对于另一种方法,您应该使用观察者来附加到订单成功事件,
签出\u onepage\u控制器\u成功\u操作
如果您使用的是onepage签出,似乎是一种不错的方法。查看更多@

要使用观察者,您需要创建自定义模块

<?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
    }
}
添加到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>
现在,当您成功执行订单时,它将触发观察器,观察器将触发您的方法,如果您的逻辑正确,它将触发CSV导出

注意
\u preparedownloadsresponse
是一种特定于管理员的方法,因此您无法在前端使用它

如果订单处理超时,首先要检查您如何使用
$observer
,因为它可能非常大


至于实际的逻辑,很难给您提供建议,因为您已经为我们提供了三行代码,但它应该相当简单。

您解决了您的问题吗?我今天才有时间尝试这个方法,它给了我这个错误:致命错误:在第30行调用未定义的方法bluejalapeno\u Orderexport\u Model\u Observer::\u preparedownloadsresponse()在/home/freemaeu/public\u html/app/code/community/bluejalapeno/Orderexport/Model/Observer.php中谢谢您的帮助!我实现了这个,我得到了这个错误:致命错误:调用未定义的方法Bluejalapeno\u Orderexport\u Model\u Observer::\u prepareDownloadResponse()在/home/freemaeu/public\u html/app/code/community/Bluejalapeno/Orderexport/Model/Observer.php的第30行,这肯定与该方法只对管理员可用有关,有没有办法在前端使用它?@黑客66基本上是说这个方法不存在我不认为
\u preparedownloadsresponse()
可以在
$this
上访问任何地方,你可能都需要
Mage::某物
->\u preparedownloadsponse()`我现在也试过了。似乎我无法从外部调用受保护的函数。。致命错误:调用受保护的方法Mage\u Core\u Controller\u Varien\u Action::\u preparedownloadsresponse()来自/home/freemaeu/public\u html/app/code/community/bluejalappno/Orderexport/Model/Observer.php第30行的上下文“Bluejalappno\u Orderexport\u Model\u Observer”,是我唯一一次在网格中使用该方法,可能还有另一种生成下载请求的方法。