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
ich hab mich grad auf “Enlight_Controller_Action_PreDispatch_Frontend_Checkout” gesetzt … funktioniert auch
[Nachtrag]
Die Methode von WillemMeert ist deutlich “netter” als meine … man erspart sich das händische Speichern der Attribute.
Danke dir