【问题标题】:How to get Magento Order data from Observer如何从 Observer 获取 Magento 订单数据
【发布时间】:2014-02-25 20:07:18
【问题描述】:

好的,我搜索了整个网络,但没有任何效果。结果非常不一致。让我先告诉你我在这里有什么。最终会创建导出文件,但无法获取订单数据和对象。

class Packagename_Modulename_Model_Observer
{
    public function exportFeed (Varien_Event_Observer $observer)
    {
        $order = $observer->getEvent()->getOrder();

        $ordered_items = $order->getAllItems();   

在 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>

现在,我看到人们像这样不使用 Varien_Event_Observer,

public function exportFeed ($observer)

我也试过不使用 getEvent()

$order = $observer->getOrder();

config.xml 中的一些不同的东西,有和没有单例

<type>singleton</type>
<class>packagename_modulename/observer</class>

我要做的就是导出通过 Magento 下订单时订购的特定商品的库存提要。

【问题讨论】:

  • 那么问题出在哪里?你有这样的订单吗$observer-&gt;getEvent()-&gt;getOrder()
  • 问题是我无法获取包含已订购商品及其数量和其他属性的订单对象。是的,我试过 $observer->getEvent()->getOrder();
  • -> getOrder 对于日志输出来说非常大。我也遇到过。

标签: php oop magento events event-handling


【解决方案1】:

试试

在 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>

在 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']
           }
        }

【讨论】:

  • ... 所以在这种情况下,您需要将&lt;class&gt;modulename/observer&lt;/class&gt; 更改为&lt;class&gt;packagename_modulename/observer&lt;/class&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多