Php 下单后将订单信息导出到.txt文件
我已经研究和尝试了所有可能的想法,我可以想出,但没有任何运气与下面…我错过了什么 想法是在我的Magento商店下订单后导出文本文件。然后,文本文件将用于打印机自动打印订单 我在Magento中创建了一个自定义模块,用于查看“sales\u order\u place\u after”(请告知此事件是否为错误事件)事件,并执行Observer.php代码 我在config.xml文件中有以下内容:Php 下单后将订单信息导出到.txt文件,php,magento,magento-1.7,Php,Magento,Magento 1.7,我已经研究和尝试了所有可能的想法,我可以想出,但没有任何运气与下面…我错过了什么 想法是在我的Magento商店下订单后导出文本文件。然后,文本文件将用于打印机自动打印订单 我在Magento中创建了一个自定义模块,用于查看“sales\u order\u place\u after”(请告知此事件是否为错误事件)事件,并执行Observer.php代码 我在config.xml文件中有以下内容: <events> <sales_order_place_
<events>
<sales_order_place_after>
<observers>
<company_printerorder>
<type>singleton</type>
<class>company_printerorder/observer</class>
<method>exportOrder</method>
</company_printerorder>
</observers>
</sales_order_place_after>
</events>
当我下订单时,输出仅仅是“1”。我需要得到所有的订单信息导出,以便完整的订单可以打印出来
系统日志显示:
2013-12-11T06:29:18+00:00 ERR (3): Notice: Array to string conversion in C:\xampp\htdocs\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 2814
2013-12-11T06:29:18+00:00 ERR (3): Notice: Array to string conversion in C:\xampp\htdocs\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 2814
2013-12-11T06:29:19+00:00 ERR (3): Notice: Array to string conversion in C:\xampp\htdocs\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 2814
2013-12-11T06:29:19+00:00 ERR (3): Notice: Array to string conversion in C:\xampp\htdocs\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 2814
2013-12-11T06:29:21+00:00 DEBUG (7): !!!!!!!!!!!!!!!!First line of the Observer!!!!!!!!!!!!!!!!
2013-12-11T06:29:21+00:00 DEBUG (7): !!!!!!!!!!!!!!!!File has been created!!!!!!!!!!!!!!!!
2013-12-11T06:29:21+00:00 DEBUG (7): 1
2013-12-11T06:29:21+00:00 DEBUG (7): !!!!!!!!!!!!!!!!Just made a successful Observer!!!!!!!!!!!!!!!!
2013-12-11T06:29:22+00:00 DEBUG (7): SMTPPro is enabled, sending email in Aschroder_SMTPPro_Model_Email_Template
2013-12-11T06:29:22+00:00 DEBUG (7): Development mode set to send all emails to contact form recipient: email@gmail.com
2013-12-11T06:29:23+00:00 DEBUG (7): ReplyToStoreEmail is enabled, just set Reply-To header: email@gmail.com
2013-12-11T06:29:23+00:00 DEBUG (7): Preparing the Google Apps/Gmail Email transport, email to send with is: email@gmail.com
2013-12-11T06:29:23+00:00 DEBUG (7): Returning transport
2013-12-11T06:29:23+00:00 DEBUG (7): About to send email
2013-12-11T06:29:29+00:00 DEBUG (7): Finished sending email
2013-12-11T06:29:29+00:00 DEBUG (7): template=sales_email_order_template
创建文件;内容仅显示:
content here....1
我遗漏了什么或做错了什么?(仍在学习…)任何建议都将不胜感激
谢谢代码中的错误是行
$observerdata = print_r($observerdata);
print_r('blah')
将blah
输出到标准输出,并在成功时返回true
。此布尔值被转换为字符串,从而在脚本中显示1
把这行改成
$observerdata = print_r($observerdata, true);
第二个参数告诉print\r
返回值而不打印。尝试更改
$event = $observer->getEvent()->getOrder()->getData();
到
$observer->getOrder()足以获取此事件的顺序实际上我的代码还有一些问题;最终结果如下所示,现在正在导出基本数据。仍然在计算产品的foreach循环,因为此时只输出最后一个项目;但这超出了这个问题的范围 谢谢你们的帮助 config.xml
<events>
<sales_order_place_after>
<observers>
<company_printerorder>
<type>singleton</type>
<class>company_printerorder/observer</class>
<method>exportOrder</method>
</company_printerorder>
</observers>
</sales_order_place_after>
</events>
请尝试以下链接:
下单后,此链接用于将订单信息导出为.txt/.csv文件格式
谢谢,我刚刚试过,但是我得到了一个空白结果:“2013-12-11T09:42:20+00:00调试(7):“文本文件内容也为空白。您是否仔细检查了
$observerdata
是否包含任何数据?我正在尝试从中获取数据。。。如果有数据,我还可以使用什么方法检查?从我发现有人在做类似的任务来看,这个事件似乎是正确的$observerdata应该从那里获取数据吗?似乎我只是没有以正确的方式请求数据?如果您想导出所有订单数据,只需使用此$observer->getEvent()->getOrder()->getData()代码>嗨,那不行;我认为它太大了,因为它只会让“下订单”过程挂起。你必须更具体地描述你想让它显示的数据。
$event = $observer->getOrder()->getData();
<events>
<sales_order_place_after>
<observers>
<company_printerorder>
<type>singleton</type>
<class>company_printerorder/observer</class>
<method>exportOrder</method>
</company_printerorder>
</observers>
</sales_order_place_after>
</events>
class Company_PrinterOrder_Model_Observer
{
public function exportOrder(Varien_Event_Observer $observer)
{
Mage::log('!!!!!!!!!!!!!!!!First line of the Observer!!!!!!!!!!!!!!!!');
$order = $observer->getEvent()->getOrder();
//Define product items
$total_items = $order->getTotalItemCount();
$items = $order->getAllItems();
if ($items) {
foreach ($items as $item) {
$item_info = ' Qty: '.$item['qty_ordered'].' Item:'.$item['name'].' Price: '.$item['price'];
}
}
//CREATE THE TXT FILE
// choose path
$path = $_SERVER['DOCUMENT_ROOT'] . '/magento/printer/orders/';
if (!is_dir($path)) {
mkdir($path);
}
// format order.txt
$filename = 'order.txt';
// create content
$content =
'OrderID:' . print_r($order->getIncrementId(), true) .
' AnotherID:' . print_r($order->getId(), true) .
' RealOrderId:' . print_r($order->getRealOrderId(), true) .
' DeliveryMethod:' . print_r($order->getShippingMethod(), true) .
' DeliveryAddress:' . print_r($order->getShippingAddress()->getData("street"), true) . ', ' . print_r($order->getShippingAddress()->getData("city"), true) .
' Subtotal:' . print_r($order->getSubtotal(), true) .
' DeliveryCharge:' . print_r($order->getShippingAmount(), true) .
' TotalPaid:' . print_r($order->getTotalPaid(), true) .
' TotalDue:' . print_r($order->getTotalDue(), true) .
' CustomerNote:' . print_r($order->getCustomerNote(), true) .
' PhoneNumber:' . print_r($order->getShippingAddress()->getTelephone(), true) .
' Email:' . print_r($order->getCustomerEmail(), true) .
' CustomerName:' . print_r($order->getCustomerName(), true);
// write file to server
file_put_contents($path . $filename, $content);
Mage::log('!!!!!!!!!!!!!!!!Just made a successful Observer!!!!!!!!!!!!!!!!');
}
}