从观察者订单对象Magento获取产品的自定义属性

时间:2015-06-10 09:27:23

标签: magento

我正在尝试从观察者的产品中获取自定义属性。 我有以下内容:

public function export_new_order($observer){
    $orderIds = $observer->getData('order_ids');
    foreach($orderIds as $_orderId){
        $order     = Mage::getModel('sales/order')->load($_orderId);
        Mage::log($order->debug());
    }
}

哪个工作正常,我在日志中得到了一个很好的print_r 但是,当我尝试获取物品时,它无法正常工作。

我试过了:

public function export_new_order($observer){
    $orderIds = $observer->getData('order_ids');
    foreach($orderIds as $_orderId){
        $order     = Mage::getModel('sales/order')->load($_orderId);
        Mage::log($order->debug());
        $items = $order->getAllItems();
        Mage::log($items->debug());
    }
}

还有:

$items = $order->getAllVisibleItems();
Mage::log($items->debug());

但是这些都不起作用,每当我点击“#34;放置顺序"

时,我都会看到白屏
<?xml version="1.0"?>
<config>
<modules>
    <Feed_Sales>
        <version>0.0.1</version>
    </Feed_Sales>
</modules>
<global>
    <models>
        <feedsales>
            <class>Feed_Sales_Model_Order_Observer</class>
        </feedsales>
    </models>
    <events>
        <checkout_onepage_controller_success_action>
            <observers>
                <feed_sales_model_order_observer>
                    <type>singleton</type>
                    <class>Feed_Sales_Model_Order_Observer</class>
                    <method>export_new_order</method>
                </feed_sales_model_order_observer>
            </observers>
        </checkout_onepage_controller_success_action>
    </events>
</global>

3 个答案:

答案 0 :(得分:1)

我相信,你得到的物品很好,问题出在其他地方。集合没有 debug 方法,因此如果您查看服务器日志,很可能会发现有关此错误。

因此,如果您想调试项目,您应该执行以下操作:

public function export_new_order($observer){
    $orderIds = $observer->getData('order_ids');
    foreach($orderIds as $_orderId){
        $order     = Mage::getModel('sales/order')->load($_orderId);
        Mage::log($order->debug());
        $items = $order->getAllItems();
        foreach ($items as $item) {
            Mage::log($item->debug());
        }
    }
}

答案 1 :(得分:0)

尝试按如下方式获取订单,然后获取该订单的商品

$order = new Mage_Sales_Model_Order();
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);

这显示在以下链接中。

Magento: Obtain Id for order, listening to the event checkout_onepage_controller_success_action

答案 2 :(得分:0)

paramter fetch存在问题。

要获得订单ID,请尝试此

 $orderIds = $observer->getEvent()->getOrderIds();

您需要更改模型前缀类名:

<class>Feed_Sales_Model</class>

发件人:

 <class>Feed_Sales_Model_Order_Observer</class>

自:

 <class>Feed_Sales_Model_Order_Observer</class> 

 <class>feedsales/order_observer</class>

文件位置应为app / code / YOurMOduleCodePool / Feed / Sales / Model / Order / Observer.php