2013-04-03 3 views
0

나는 sales_order_save_after 이벤트를 사용하여 송장 소계에 액세스하여 무언가를 시도합니다.Magento 주문 접수 후 송장 속성에 액세스

public function peterParker($observer) 
    { 
    $order = $observer->getEvent()->getOrder(); 

    $orders = Mage::getModel('sales/order_invoice')->getCollection() 
        ->addAttributeToFilter('order_id', array('eq'=>$order->getId())); 
    $orders->getSelect()->limit(1); 

    $subTotal = $orders->getSubotal(); 

    Mage::log($subTotal); 

} 

을하지만 주문을 할 때 나는 내 PHP는 로그에이 오류를 얻을 : 내 observer.php에서

내가 가진

전화 정의되지 않은 방법 Mage_Sales_Model_Resource_Order_Invoice_Collection에 :: getSubotal()를

답변

1

꽤 직선적 인 오류 메시지가 있습니다.

통화가 정의되지 않았습니다. HOD Mage_Sales_Model_Resource_Order_Invoice_Collection :: getSubotal()

당신은 컬렉션 개체에 getSubotal를 호출하고 있습니다. 컬렉션 객체에는 메소드가별로 없으며 컬렉션에는 마법 getter 또는 setter가 없습니다. 그것은

당신은

Mage::Log($order->getData()); 
Mage::Log($order->getSubTotal()); 
+0

큰 감사를 해당 모음

$order = $orders->getFirstItem(); 

오프 첫 번째 항목을 팝업하고 그 첫 번째 항목에서 데이터를 잡고 싶을 것이다이었다 컬렉션에서 송장을 받고 그 나를 곤란하게했다. 이상하게도 로그에서 두 개의 항목이있어 이벤트가 두 번 실행되는 것 같습니다. –

+0

@MatthewDolman 컬렉션 또한'foreach' 가능합니다. 앞으로는' getData()};를 사용하십시오. –