How to get Magento Order data from Observer

烂漫一生 提交于 2019-12-10 19:03:39

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!