呼叫在Magento的扩展

问题描述:

你好Magento的专家组成的非对象的成员函数的getData(),呼叫在Magento的扩展

我开发了一个Magento Extension这是工作的罚款Version 1.6 and 1.7,但是当我把它安装Version 1.5,它给我一个错误:

Fatal error: Call to a member function getData() on a non-object in /home/broadcas/public_html/app/code/community/Gwb/Magecrmsync/controllers/Adminhtml/OrdersController.php on line 18 

以下是我的OrderController.php代码。

<?php 
class Gwb_Magecrmsync_Adminhtml_OrdersController extends Mage_Adminhtml_Controller_Action 
{ 
public function indexAction() 
{ 
    $model = Mage::getModel('sales/order'); 

    $collection = $model->getCollection() 
    ->addFieldToFilter('status', array("in" => array('complete','closed','pending','holded','payment_review','pending_payment','pending_paypal','processing'))); 

    $data = array(); 
    $orderArr = array(); 

    // getting order details 

    $records = 0; 
    foreach($collection as $order) 
    { 
     $data[$records]['order_data']['shipping_address'] = $order->getShippingAddress()->getData(); // get shipping details 
     $data[$records]['order_data']['billing_address'] = $order->getBillingAddress()->getData(); // get billing details 
     $data[$records]['order_data']['order_total'] = $order->getGrandTotal(); // get total amount 
     $data[$records]['order_data']['shipping_amount'] = $order->getShippingAmount(); 
     $data[$records]['order_data']['order_details'] = $order->toArray(); 
     $records++; 
    } 

    // getting order details 

} 
} 

任何人都可以请指导我什么我做错了其不Version 1.5工作。

任何帮助,将不胜感激。

谢谢

+0

这也许是因为'getBillingAddress()'或'getShippingAddress()'目前正在返回一个空的,所以你想叫的东西的方法'的getData()'这是不是一个对象。尝试添加一些调试来知道'$ order-> getShippingAddress()'和'$ order-> getBillingAddress()'是什么,如果你的订单有这样的方法。 – MatRt 2013-03-19 05:30:10

+0

@ user1073122,你是对的。 getShippingAddress()返回null。那么如何在1.5版本中找到送货地址和账单地址? – 2013-03-19 05:33:29

+0

你应该参考你的magento扩展。在这一点上,我无法帮助你。尝试检查对象$ order的类名是什么,并查看类定义以了解可用的方法。 – MatRt 2013-03-19 05:34:44

检查我的答案。您应该检查$order->getShippingAddress()是否为对象。因为如果产品是虚拟的。送货地址将被设置。

class Gwb_Magecrmsync_Adminhtml_OrdersController extends Mage_Adminhtml_Controller_Action 
{ 
public function indexAction() 
{ 
    $model = Mage::getModel('sales/order'); 

    $collection = $model->getCollection() 
    ->addFieldToFilter('status', array("in" => array('complete','closed','pending','holded','payment_review','pending_payment','pending_paypal','processing'))); 

    $data = array(); 
    $orderArr = array(); 
    // getting order details 
    $records = 0; 
    foreach($collection as $order) 
    { 

      if(is_object($order->getShippingAddress())) 
      {  
       $data[$records]['order_data']['shipping_address'] = $order->getShippingAddress()->getData(); // get shipping details 
      }  
      else 
      { 
       $data[$records]['order_data']['shipping_address'] = array(); // no shipping details 
      } 

      if(is_object($order->getBillingAddress())) 
      { 
       $data[$records]['order_data']['billing_address'] = $order->getBillingAddress()->getData(); // get billing details 
      } 
      else 
      { 
       $data[$records]['order_data']['billing_address'] = array(); // no billing details  
      } 

      $data[$records]['order_data']['order_total'] = $order->getGrandTotal(); // get total amount 
      $data[$records]['order_data']['shipping_amount'] = $order->getShippingAmount(); 
      $data[$records]['order_data']['order_details'] = $order->toArray(); 
       $records++; 
    } 

    // getting order details 

} 
} 
+0

谢谢!它解决了问题.... – 2013-03-19 07:38:37