问题
Ok, Ive searched all over the web and nothing worked. The results were very inconsistent. Let me first show you what I have here. It will create an export file in the end but unable to obtain order data and object.
class Packagename_Modulename_Model_Observer
{
public function exportFeed (Varien_Event_Observer $observer)
{
$order = $observer->getEvent()->getOrder();
$ordered_items = $order->getAllItems();
and in config.xml
<global>
<events>
<sales_order_place_after>
<observers>
<packagename_modulename_order_observer>
<class>Packagename_Modulename_Model_Observer</class>
<method>exportFeed</method>
</packagename_modulename_order_observer>
</observers>
</sales_order_place_after>
</events>
</global>
Now, Ive seen people use without Varien_Event_Observer like that,
public function exportFeed ($observer)
Ive also tried without getEvent()
$order = $observer->getOrder();
and something different in config.xml, with and without singleton
<type>singleton</type>
<class>packagename_modulename/observer</class>
All I want to do is export an inventory feed of that particular item ordered when an order is placed via Magento.
回答1:
Try
In config.xml
<config>
<modules>
<Packagename_Modulename>
<version>1.3</version>
</Packagename_Modulename>
</modules>
....
<global>
<models>
<packagename_modulename>
<class>Packagename_Modulename_Model</class>
</packagename_modulename>
</models>
<events>
<sales_order_place_after>
<observers>
<packagename_modulename_order_observer>
<type>singleton</type>
<class>modulename/observer</class>
<method>exportFeed</method>
</packagename_modulename_order_observer>
</observers>
</sales_order_place_after>
In Observer.php
class Packagename_Modulename_Model_Observer
{
public function exportFeed($event)
{
$order = $event->getOrder();
foreach ($order->getAllVisibleItems() as $item){
$item->getQtyOrdered() // Number of item ordered
//$item->getQtyShipped()
//$item->getQtyInvoiced()
$optionArray = $item->getProductOptions()
// Todo : check to see if set and is array $optionArray['options']
foreach($optionArray['options'] as $option){
// Mage::log($option)
//echo $option['label']
//$option['value']
}
}
来源:https://stackoverflow.com/questions/22024999/how-to-get-magento-order-data-from-observer