it-swarm.com.de

Bestell-Inkrement-ID in Magento abrufen

Ich versuche, die Bestell-Inkrement-ID in Magento auf der Seite success.phtml abzurufen, damit ich diese für Affiliate-Tracking verwenden kann.

Ich verwende den folgenden Code, aber in der zweiten Zeile wird ein Fehler angezeigt.

$order = Mage::getSingleton('sales/order')->getLastOrderId();
$lastOrderId = $order->getIncrementId();

Der Fehler lautet:

Schwerwiegender Fehler: Aufruf einer Member-Funktion getIncrementId () für ein Nichtobjekt in Zeile 34: $ LastOrderId = $ order-> getIncrementId ();

Ich habe mich gefragt, ob jemand eine Idee hat, wie man die Order Increment Id erhält? Dies ist die Referenznummer, die im Admin angezeigt wird, normalerweise etwa: # 1000123

16
doubleplusgood

Wenn Sie dies speziell auf der Seite "Erfolg beim Checkout" tun - in success.phtml -, ist der Code zum Abrufen der Bestellinkrement-ID bereits in der Vorlage verfügbar, da er dem Kunden angezeigt wird.

Sie brauchen nur Folgendes:

$orderId = $this->getOrderId();

Beachten Sie, dass dies auf anderen Seiten nicht funktioniert. Für diese müssen Sie Folgendes verwenden:

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
11
Chris Norton

$ order in Ihrem Code ist die letzte Bestell-ID ... wie der Funktionsname andeutet. Wenn dies nicht der gewünschte Wert ist, laden Sie eine Bestellung mit diesem Befehl und verwenden Sie dann den Getter:

$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();
7
Greg

Das wird perfekt funktionieren, ich führe dieses jetzt in meinem Modul aus.

$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();

Hoffe es hilft danke. :)

5
Chiragit007

Ihr Anruf an 

Mage::getSingleton('sales/order')

gibt kein Objekt zurück. Versuchen 

var_dump(Mage::getSingleton('sales/order'));

bestätigen. 

Ich habe mich in letzter Zeit nicht mit dem Checkout-Code befasst, aber ich bin mir ziemlich sicher, dass sales/order Ihnen die laufende Bestellung liefert. Sobald die Bestellung aufgegeben wurde, wird sie nicht mehr bearbeitet.

Der "richtige" Weg, dies zu tun, wäre, einen Beobachter für eines der Ereignisse zu erstellen, das Magento während der Kasse auslöst. Das

checkout_onepage_controller_success_action

event sollte ausreichend sein, vorausgesetzt, Sie haben den Checkout-Prozess nicht zu sehr angepasst. 

Es gibt eine knappe Erklärung, wie dies im dem Wiki (für ein anderes Ereignis) geschieht. 

Sobald Sie Ihre Veranstaltung eingerichtet und beantwortet haben, führen Sie eine aus 

$event = $observer->getEvent();
var_dump($event->getData());

um zu sehen, welche Informationen Sie zur Verfügung haben. Es besteht die Möglichkeit, dass sich dort ein Auftragsobjekt befindet, mit dem Sie die ID erhalten, nach der Sie suchen.

4
Alan Storm

Ich musste verwenden ...

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());

Während in der Vorlage success.phtml. Anstelle von load () habe ich loadByIncrementId verwendet - dann war mein Auftragsobjekt nicht mehr leer.

3
Bryce

Wenn Sie sich im Admin-Modus befinden, versuchen Sie Folgendes:

$orderModel = Mage::getModel('sales/order'); $orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1); $orderId = $orders->getFirstItem()->getIncrementId();

3
Matthias Kleine

getRealOrderId() scheint die Bestellnummer zurückzugeben, wie in Datengittern dargestellt. getId() gibt die interne ID der Zeile in der Datenbank zurück, die Sie wahrscheinlich nicht möchten.

2
Dominic

Sie können die Inkrement-ID mit diesem Code-Snippet abrufen:

$orderId = 12;    
$order = Mage::getModel('sales/order')->load($orderId);
$Incrementid = $order->getIncrementId();

Jetzt können Sie ein Echo für die Variable $ Incrementid ausführen und die Inkrement-ID anzeigen.

Ich hoffe das hilft.

2
lucasvm1980
$lastOrderIncrementId = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
0
Naveenbos