Hooks - sSaveOrder TypeAfter

Hey, wie komme ich am besten an die Attribut Felder aus dem basket, wenn ich mit TypeAfter in den Vorgang sSaveOrder einsteige? Ich will nach dem Anlegen der Order das Feld internalcomment abändern und die Attribut Felder aus dem basket hier einfügen. Danke

Mist, hab ein Denkfehler. Das kann nicht gehen, da beim TypeAfter vom sSaveOrder die Tabelle s_order_basket bereits geleert wurde :frowning: Okay, dann anderst. Wie bekomme ich die Freitextfelder aus s_order_basket von jeder Artikel im Warekorb bei der Bestellung als Zusammenfassung in die Tabelle s_order in das Feld internalcomment ? (So wie Shopware das im Plugin „Individuelle Optionen für Artike“ macht). :shopware: Bitte gebt mir einen Tipp :shopware:

Moin ottscho, hab das zwar selbst noch nicht getestet - bis jetzt nichts mit Attributen im Warenkorb zu tun gehabt. :wink: Aber in ‚sSaveOrder()‘ gibts z.B. das Event: ‚Shopware_Modules_Order_SaveOrder_ProcessDetails‘. Da hast du Zugriff auf den Inhalt des Warenkorbs. Evtl. einen Versuch wert?! Enlight()-\>Events()-\>notify('Shopware\_Modules\_Order\_SaveOrder\_ProcessDetails', array('subject'=\>$this,'details'=\>$this-\>sBasketData["content"]));

Hey Ralf, hab es nun so als TypeAfter von sSaveOrder versucht: var\_dump(Enlight()-\>Events()-\>notify('Shopware\_Modules\_Order\_SaveOrder\_ProcessDetails', array('subject'=\>$this,'details'=\>$this-\>sBasketData["content"]))); Es kommt die Fehlermeldung: Fatal error: Using $this when not in object context in /var/www/engine/Shopware/Plugins/Community/Frontend/OttschoAreaCalculator/Bootstrap.php on line 302

Nein, so natürlich: $event = $this-\>createEvent( 'Shopware\_Modules\_Order\_SaveOrder\_ProcessDetails', 'onOrder\_SaveOrderProcessDetails' ); $this-\>subscribeEvent($event); public static function onOrder\_SaveOrderProcessDetails(Enlight\_Event\_EventArgs $args) { $basketContent = $args-\>getDetails(); $order = $args-\>getSubject(); $orderNumber = $order-\>sOrderNumber; var\_dump($basketContent); // und hier dann die Attribute in der DB speichen... }

Okay, danke. Das könnte klappen. Jetzt habe zwei Probleme. Wie rufe ich die Informationen ab? $basketContent = $args-\>getSubject(); var\_dump($basketContent["sUserData"]); Bringt diese Mledung: Fatal error: Cannot use object of type Shopware_Proxies_sOrderProxy as array in /var/www/engine/Shopware/Plugins/Community/Frontend/OttschoAreaCalculator/Bootstrap.php on line 59 Lass ich das [„sUserData“] weg, so bekomme ich die ganze Latte an Informationen im Array angezeigt. Und als zweites brauche ich ja die ordernumber oder die ID dass ich die Werte in der Tabelle s_order zum richtigen Datensatz anfügen kann? P.S. Woher weisst du, dass du mit „Shopware_Modules_Order_SaveOrder_ProcessDetails“ dort einsteigen kannst? Irgendie ist das alles noch nicht 100%ig durchschaubar für mich :frowning:

Einfach den Code von ‚sSaveOrder‘ anschauen. Alles was mit ‚Enlight()->Events()->‘ beginnt. Da sieht man dann, welche Werte übergeben werden bzw. welche man im Event verwenden kann. PS.: Code oben noch mal geändert!!! Schau mal, ob du damit alle notwendigen Daten erhältst. (Nicht getestet!)

1 Like

[quote=“radox”]Einfach den Code von ‘sSaveOrder’ anschauen. Alles was mit ‘Enlight()->Events()->’ beginnt. Da sieht man dann, welche Werte übergeben werden bzw. welche man im Event verwenden kann. PS.: Code oben noch mal geändert!!! Schau mal, ob du damit alle notwendigen Daten erhältst. (Nicht getestet!)[/quote] Hervorragend, geht nun so wie ich es will :slight_smile: Vielen vielen Dank!