2016-04-13 13 views
2

このイベントの後にDbのフィールドを更新する必要があるため、カートに商品を追加する際に商品の見積もりIDを取得する必要がありますが、How to get Quote Item Id after adding a product to cart?働いていない、私はイベントを使用しています:sales_quote_product_add_afterと私のoberver機能は次のとおりです。商品をカートに追加した後に見積もりアイテムIDを取得

$quoteItem = $observer->getEvent()->getQuoteItem(); 
$id = $quoteItem->getId(); 

も私はそれが致命的なエラー以下投げている

$id = $quoteItem->getItemId(); 

で試してみました:

Fatal error</b>: Call to a member function getId() on a non-object in <b>C:\xampp\htdocs\project\app\code\local\Custom\Module\Model\Observer.php</b> on line <b>1053</b><br /> 

私が間違っていることを教えてください、私は他の多くのリンクからも参考にしましたが、誰も働いていません。

+0

最初にcheck echo $ quoteItem;あなたが結果を得ているかどうかを見てください –

+0

var_dump($ quoteItem)の結果; :NULL – user0509

+0

$ observer-> getEvent() - > getQuoteItem()これは動作していませんあなたの関数をチェックしてください –

答えて

1

このイベントのQuoteItemsキーは私の理解している通りです。このイベントは、製品に追加されるすべてのアイテムを含むitems配列を提供します。だからあなたは多くのコードを変更する必要はありません。

$item = $observer->getEvent()->getItems()[0]; 
$item_id = $item->getId(); 

希望の結果が得られるはずです。

+0

これは空の結果を返しています – user0509

1

誰かがバスケットにアイテムを追加したときにメソッドを呼び出すオブザーバをモジュール設定ファイルに定義する必要があります。次のようなもの。

<events> 
     <sales_quote_item_set_product> 
      <observers> 
       <quoteitem_set_eta_data> 
        <type>singleton</type> 
        <class>NameSpace_Eta_Model_Observer</class> 
        <method>setEtaOnQuoteItem</method> 
       </quoteitem_set_eta_data> 
      </observers> 
     </sales_quote_item_set_product> 
    </events> 

あなたのオブザーバーメソッドは、以下を使用して見積もり項目にアクセスします。あなたを助けるかもしれないコードに続いて

public function setEtaOnQuoteItem($oObserver) { 
    $oQuoteItem = $oObserver->getQuoteItem(); 
    $quoteId = $oQuoteItem->getItemId(); 
} 
+0

これは正しい見積もりアイテムIDを返していません。カート内に複数のアイテムがある場合、これは見積アイテムIDの最初の値を返しています。 – user0509

+0

申し訳ありませんが、アイテムIDビットをテストしませんでした。このメソッドはQuote Itemオブジェクトを返します。代わりに項目オブジェクトに対してgetItemId()を呼び出してみてください。私はこれを反映するために私の答えを更新しました。 – Ashley

0

$customer = Mage::getModel('customer/customer')->load($customerId); 
$quote = Mage::getModel('sales/quote')->setSharedStoreIds($storeIds) 
    ->loadByCustomer($customer); 
$collection = $quote->getItemsCollection(); 
print_r($collection->getData()); 

負荷CUSTOMER_IDを顧客とあなたが引用の詳細情報を得ることができるので、引用情報を取得します。

関連する問題