Shopware 4 - Mail sOrder -> Zugriff auf s_order_attributes

Hallo zusammen, ich bemühe mich gerade darum, in der E-Mail-Vorlage sOrder auf die attribute1 - attribute6 zuzugreifen, die während der Bestellung in der s_order_attributes abgelegt werden. In den im Backend angezeigten verfügbaren Variablen kann ich sie leider nicht entdecken bzw. meine Vermutung, sie wären evtl. via $attributes.attribute1, etc. verfügbar, erwies sich als falsch. Freue mich über jedwede Hilfestellung! Herzliche Grüße, Christian

So, bin einen Schritt weiter: Die in der E-Mail-Vorlage rechts aufgeführten Variablen, insbesondere die attributes.attribute1 können tatsächlich in der E-Mail ausgelesen werden, aber durch das von mir verwendete Event $this-\>subscribeEvent( 'Shopware\_Modules\_Order\_SaveOrder\_ProcessDetails', 'onOrder\_SaveOrderProcessDetails' ); fülle ich diese Attribute zusätzlich mit einem direkten Datenbankeintrag. Diese Daten werden dann auch in der Datenbank wiedergegeben, aber nicht in der Variable attributes.attribute angezeigt. Im Gegenteil, der eigene Datenbankeintrag überschreibt ggfs. bereits vorhandene Einträge, die sich korrekt in attributes.attribute wiedergefunden hätten. Es zeigt sich also, dass nach einem Blick in den Core sOrder.php mein Event erst wirksam wird, wenn der Array attributes für die Verarbeitung in der Mail bereits geschrieben ist. In sOrder.php kommt das Event Enlight()-\>Events()-\>notify('Shopware\_Modules\_Order\_SaveOrder\_ProcessDetails', array('subject'=\>$this,'details'=\>$this-\>sBasketData["content"])); an Zeile 728. In Zeile 558 beginnend wird aber bereits das relevante Array $orderAttributes gefüllt. Sehe ich das dann richtig, dass ich daher das bereits vorhandene Array überschreiben müsste? Wenn ja, wie wäre das zu bewerkstelligen? Vielleicht dazu jemand einen Hinweis? Danke, Christian

So, dank der Hilfe von ottscho sowie längeren Studierens der Core sOrder.php konnte ich das Problem jetzt lösen. Es ist schlicht und einfach so, dass „Shopware_Modules_Order_SaveOrder_ProcessDetails“ erst zum Einsatz kommt, wenn „$orderAttributes“ bereits vorhanden und in Zeile 556 der sOrder.php bereits beim ersten Abspeichern der Order-Daten befüllt ist. Daher bin ich nun auf Shopware_Modules_Order_SaveOrder_FilterSQL ausgewichen und parse den dort zurückgelieferten SQL-String, um meine attributes einzutragen. Nicht sehr schön wg. dem String und dem Parsing, aber es funktioniert und die attributes stehen bei Erstellung von „$orderAttributes“ zur Verfügung. Dann kann ich auch später mit dem Event „Shopware_Modules_Order_SendMail_FilterVariables“ die von mir serialisierten Attributes auslesen und in den Array für die Mails packen, um dann bequem auf die Variablen nach Schema {$attributes.attribute1.key} zuzugreifen. Viele Grüße, Christian

1 „Gefällt mir“