Zusätzliche Informationen im Checkout auslesen und als Attribute speichern

Ich habe den Checkout um zusätzliche Informationen erweitert und mich dazu (unter anderem) auf

Shopware_Modules_Order_SaveOrder_ProcessDetails

„draufgesetzt“, um dort die Attribute zu speichern. Das funktioniert auch aber …

… wie komme ich an dieser Stelle an die aus dem Template übergebenen Werte ran?

Hallo, ich hatte genau dasselbe “Problem”.

Dafür ist jetzt ein extra Event verfügbar: Shopware_Modules_Order_SaveOrder_FilterAttributes.

Subscriben und benutzen geht wie folgt:

class Frontend extends BaseSubscriber
{
    public static function getSubscribedEvents()
    {
        return array(
            'Shopware_Modules_Order_SaveOrder_FilterAttributes' => 'onSaveOrder_FilterAttributes'
        );
    }

    public function onSaveOrder_FilterAttributes(\Enlight_Event_EventArgs $args)
    {
        $request = Shopware()->Front()->Request();
        
        $attributeData = $args->getReturn();
        $attributeData['hier_mein_attribute_1'] = $request->get('variabele1_im_request');
        $attributeData['hier_mein_anderes_attribute_2'] = $request->get('variabele2'));
        
        return $attributeData;
    }
}

Über das $args kriegst du die ganze Attribute Daten die Shopware (und andere Plugins) schon setzen/benutzen.

Du kannst die dann ändern/Sachen hinzufügen zB. hier oben mit Daten aus dem Template (via $request).

Vielleicht gibt’s jetzt schon etwas besseres statt Shopware()->Front()->Request() um an die Daten zu kommen, aber so funktioniert’s bei mir.

Good luck !

lol :slight_smile:

ich hab mich grad auf “Enlight_Controller_Action_PreDispatch_Frontend_Checkout” gesetzt … funktioniert auch :slight_smile:

 

[Nachtrag]

Die Methode von WillemMeert ist deutlich “netter” als meine … man erspart sich das händische Speichern der Attribute.

Danke dir :slight_smile: