Reputation: 553
I am trying to get a custom attribute in from a product in an observer. I have the following:
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());
}
}
Which works fine, I get a nice print_r in my log.
However, when I try to get items it doesn't work.
I tried this:
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());
}
}
Also this:
$items = $order->getAllVisibleItems();
Mage::log($items->debug());
But none of those work, i get a white screen whenever I click "Place order"
<?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>
Upvotes: 1
Views: 1294
Reputation: 7611
There are issue with paramter fetch.
For getting order id try this
$orderIds = $observer->getEvent()->getOrderIds();
you need change model prefix class name:
to:
<class>Feed_Sales_Model</class>
From:
<class>Feed_Sales_Model_Order_Observer</class>
And
From:
<class>Feed_Sales_Model_Order_Observer</class>
to
<class>feedsales/order_observer</class>
file location should be app/code/YOurMOduleCodePool/Feed/Sales/Model/Order/Observer.php
Upvotes: 0
Reputation: 2103
I believe, you're getting the items just fine, the problem is somewhere else. Collections don't have debug method, so if you look into your server logs, most likely you will find an error about that.
So if you want to debug the items, you should do something like this:
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());
}
}
}
Upvotes: 1
Reputation: 14746
Try to get order as follows and then get items for that order
$order = new Mage_Sales_Model_Order();
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);
This is shown in following link.
Magento: Obtain Id for order, listening to the event checkout_onepage_controller_success_action
Upvotes: 0