2016-04-13 9 views
2

Ich brauche Zitat Artikel-ID des Produkts, wenn es in den Warenkorb hinzugefügt wird, weil ich ein Feld von Db nach diesem Ereignis aktualisieren muss, habe ich Referenz von How to get Quote Item Id after adding a product to cart?, aber dies genommen nicht funktioniert, habe ich verwendet Veranstaltung: sales_quote_product_add_after und meine oberver Funktion ist:Artikel ID erhalten nach dem Hinzufügen des Produkts zum Warenkorb

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

auch mit

ich habe versucht
$id = $quoteItem->getItemId(); 

Es folgt Fatal error werfen:

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 /> 

Bitte lassen Sie mich wissen, was ich falsch mache, ich habe Bezug genommen von vielen anderen Links, aber keiner von ihnen funktioniert.

+0

zunächst check echo $ quoteItem; Hier sehen Sie, ob Sie das Ergebnis erhalten oder nicht –

+0

Ergebnis von var_dump ($ quoteItem); ist: NULL – user0509

+0

$ observer-> getEvent() -> getQuoteItem() das funktioniert nicht überprüfen Sie Ihre Funktion –

Antwort

1

Nach meinem Verständnis, Sie werden nicht QuoteItems Schlüssel für dieses Ereignis erhalten. Dieses Ereignis stellt ein Elementarray bereit, das alle Elemente enthält, die für ein Produkt hinzugefügt werden. Sie müssen also Ihren Code nicht viel ändern.

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

Es sollte Ihnen das gewünschte Ergebnis geben.

+0

Dies ist ein leeres Rückgabeergebnis – user0509

1

Sie sollten einen Beobachter in Ihrer Modulkonfigurationsdatei definiert haben, der eine Methode aufruft, wenn jemand einen Artikel zum Warenkorb hinzufügt. Etwas wie das Folgende;

<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> 

Ihre Beobachtermethode hat dann Zugriff auf den Angebotsartikel, indem Sie Folgendes verwenden:

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

Dies gibt keine korrekte Angebotsartikel-ID zurück. Dies gibt den ersten Wert der Angebotsartikel-ID zurück, wenn mehrere Artikel im Warenkorb sind. – user0509

+0

Entschuldigung, habe das Item-ID-Bit nicht getestet. Diese Methode gibt das Angebotspositionsobjekt zurück. Versuchen Sie stattdessen, getItemId() für das Elementobjekt aufzurufen. Ich habe meine Antwort aktualisiert, um dies zu berücksichtigen. – Ashley

0

folgenden Code können Ihnen helfen,

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

laden Kunden mit customer_id und Zitat Informationen erhalten, so dass Sie Ihren Kurs Details zu bekommen.

Verwandte Themen