chrisen
Goto Top

Warenkorbpositionen aus Shopware auslesen

Hallo zusammen,
ich habe eine Frage zu Shopware.

Und zwar: Ich entwickle im Moment ein kleines Plugin für Shopware, was mir nach Bestellabschluss alle Relevanten Bestelldaten in eine XML zusammenfasst und diese auf dem Server abspeichert.

Einiges klappt schon ohne Probleme:
Ich kann die jeweiligen Kundendaten auslesen und in eine XML schreiben. Ordernummer, sowie Betrag etc. funktionieren auch.

Leider komme ich irgendwie nicht an die einzelnen Warenkorbpositionen dran. Das heißt an die einzelnen Artikelnummern, Preise usw. der bestellten Artikel.

Hier ein ausschnitt meines bisherigen Ansatzes:

 public function blabla (Enlight_Event_EventArgs $arguments)
    {

        $xml = new SimpleXMLElement();

        $order 					= $arguments->getSubject();
        $orderDetails 			= $arguments->getDetails();
        $UserData                             = $order->sUserData;
        $orderNumber                      = $order->sOrderNumber;

        $data = $xml->addChild('data');  

        $data->addChild('OrderNumber', $orderNumber);  
        $data->addChild('priceWithTax', $preis);  

        $data->addChild('shipping_title', $UserData ["shippingaddress"] ["title"] );  

        $dom = new DOMDocument('1.0');  
        $dom->preserveWhiteSpace = false;
        $dom->formatOutput = true;
        $dom->loadXML($xmlAusgabe = $xml->asXML());
        $dom->save('files/test/Export' . $orderNumber . '.xml');  
    }



Würde mich riesig über eure Hilfe freuen !

Grüße,
chrisen

Content-Key: 315949

Url: https://administrator.de/contentid/315949

Printed on: April 25, 2024 at 06:04 o'clock

Member: colinardo
Solution colinardo Sep 22, 2016 updated at 14:30:41 (UTC)
Goto Top
Hallo chrisen,
ich kenne Shopware jetzt überhaupt nicht, aber laut Doku solltest du mit
$products = $arguments->get('products');
an die Artikel einer Bestellung kommen.
https://developers.shopware.com/developers-guide/event-guide/

Welche Version ihr von Shopware nutzt können wir hier leider nur raten.

Vermutlich sind dann als Ergebnis die Artikel als assoziatives Array enthalten. Lass dir die Variable einfach mit print_r($products); ausgeben.

Es könnte auch sein das in $orderDetails
$orderDetails = $arguments->getDetails();
die Artikel schon als Array enthalten sind. Lass dir die Inhalte einfach per debugging ausgeben dann findest du sie schon face-smile. Oder sich per get_object_vars() die Klassenmember oder get_class_methods() die Methoden der Argument-Variablen auflisten lassen.

Grüße Uwe
Member: chrisen
chrisen Sep 22, 2016 at 16:44:13 (UTC)
Goto Top
Hallo Uwe,

vielen Dank für deine Antwort!
Ich habe die Variablen endlich gefunden, sie standen in

 sBasketData ["content"]["ordernumber"]  

// 0=Position in Warenkorb
Bin durch das Debugging drauf gekommen. *Peinlich* das ich das nicht selber drauf gekommen bin. :D

Ich habe noch eine kurze Frage: Und zwar möchte ich gerne die Position (also da wo "0" drinnen steht) hochzuholen. Also auf "0" mehrere Inhalte ausgeben, Position auf "1" und wieder Inhalte ausgeben und so weiter... bis zum Beispiel in ["ordernumber"] nichts mehr drinnen steht. Geht das?
Member: colinardo
Solution colinardo Sep 22, 2016 updated at 17:08:51 (UTC)
Goto Top
Zitat von @chrisen:
Ich habe noch eine kurze Frage: Und zwar möchte ich gerne die Position (also da wo "0" drinnen steht) hochzuholen. Also auf "0" mehrere Inhalte ausgeben, Position auf "1" und wieder Inhalte ausgeben und so weiter... bis zum Beispiel in ["ordernumber"] nichts mehr drinnen steht. Geht das?
Du meinst eine einfache ForEach-Schleife über alle Elemente eines Arrays (Artikel) ? Sicher:
foreach($sBasketData["content"] as $item){  
    echo $item["ordernumber"] . "<br />";  
}
Member: chrisen
chrisen Sep 22, 2016 at 17:47:11 (UTC)
Goto Top
Super VIELEN DANK