Ergebnis von Checkout soll Datei sein

Hallo zusammen,

als Ergebnis des Checkouts muss ich für eine definierte Kundengruppe keine Bestellung erzeugen sondern eine Datei für den Download erstellen, die bestimmte Artikeldaten des aktuellen Bestellvorgangs enthält.

Das heißt, ich habe in der $sBasket alle Artikel und Infos drin, muss jetzt aber eine Datei erstellen, die ich dann bei einem Klick auf „Jetzt kostenpflichtig bestellen“ zum Download anbiete. Sprich der Kunde klickt drauf, und der Download startet.

Soweit ich weiß geht das nur, wenn eine Datei existiert, oder? Wenn ja hab ich keine Ahnung, wie ich innerhalb von Smarty eine Datei anlegen kann. PHP-Befehle gehen nicht, weil {php} verboten ist.

Hat jemand einen Lösungsvorschlag für mich?

 

Gesunde und sonnige Grüße

Oliver

Klingt für mich etwas skurril. Aber am Ende generiert Shopware doch eine Zusammenfassung der Bestellung. Kannst Du sie nicht nutzen? 

Ansonsten, anhand der Art wie Du die Frage stellst, gehe ich davon aus, dass Du noch nicht viel Entwickelt hast. Nur damit Du eine Idee davon bekommst, was Du dir zumutest: https://developers.shopware.com/developers-guide/

Danke NextMike. Jetzt ist der Knoten offen: Dispatch-Event.

Jetzt noch eine Frage nachgeschoben: ich registriere über Enlight_Controller_Dispatcher_ControllerPath_Frontend_Checkout meine Funktion zum Erstellen der Datei. Klappt auch. ABER: der Checkout erstreckt sich ja über mehrere Schritte und eigenlich brauch ich die Funktion nur beim letzten, bei confirm. Ich meine gelesen zu haben, dass das dann über Enlight_Controller_Dispatcher_ControllerPath_Frontend_Checkout::confirm gehen sollte. Klappt aber bei mir irgendwie nicht 8-(. Hab ich was falsch verstanden oder was übersehen?

Hallo,

hast du es in offiziellen Shopware Dokumentationen gelesen oder irgendwo im WWW? Das sieht mir eher nach einem Teil einer Hook aus, was du da gefunden hast, im Prinzip müsste es darüber gehen:

public static function getSubscribedEvents()
{
    return [
        'Enlight_Controller_Action_Frontend_Checkout_Confirm' => 'onCheckoutConfirm'
    ];
}
 

public function onCheckoutConfirm(\Enlight_Event_EventArgs $args)
{
    /** @var Enlight_Controller_Action $subject */
    $subject = $args->getSubject();
 
    ...
}

Wobei es aus meiner Sicht eher “Finish” sein müsste, also die Bestellbestätigungsseite und nicht die Bestellabschlussseite.

Grüße

Sebastian

1 „Gefällt mir“

Danke Sebastian. Ich schau mal, ob es bei confirm oder finish besser passt.