Hallo!
Ich bin neu in der Shopware Entwicklung und hätte da einige Fragen zum Checkout Prozess den ich gerne Customizen wollen würde. Aktuell möchte ich gerne eine weitere Seite beim checkout Prozess hinzufügen, nachdem der Kunde seine Daten eingegeben hat. Ich habe es soweit geschafft eine Custom Page in Shopware 6 zu erstellen und diese auch per eingabe in der Browserleiste aufzurufen.
Nun ist es mein Ziel diese Seite automatisiert im Checkout Prozess auszuführen. Ich habe dafür einen EventSubscriber erstellt der auf das Event OrderEvent::ORDER_WRITTEN_EVENT horcht. Nun möchte ich aus diesem Listener auf meine Custom Seite weiterleiten und im besten Fall auch die Daten weiter geben und den normalen checkout prozess von dort aus weiterfortsezten. Sprich ich möchte mich nur einmal kurz dazwischen schalten und danach mit dem standart prozess weiter machen. Wie kann ich das am besten aus einem EventSubscriber realisieren und ist das der richtige Ansatz?
Hier mein EventSubscriber:
class OrderListener implements EventSubscriberInterface {
public static function getSubscribedEvents() : array
{
return [
OrderEvents::ORDER_WRITTEN_EVENT => "onOrderCreated"
];
}
function onOrderCreated(EntityWrittenEvent $event) {
// redirect here to custom page
}
}
Hier mein StorefrontController:
/**
* @RouteScope(scopes={"storefront"})
*/
class PageController extends StorefrontController {
/**
* @var DeliveryTimeSelectionPageLoader
*/
private $deliveryTimeSelectionPageLoader;
public function __construct(DeliveryTimeSelectionPageLoader $deliveryTimeSelectionPageLoader)
{
$this->deliveryTimeSelectionPageLoader = $deliveryTimeSelectionPageLoader;
}
/**
* @Route("/delivery-time-selection", name="frontend.deliverytimeselection.page", methods={"GET"})
*/
public function deliveryTimeSelectionPage(Request $request, SalesChannelContext $context) : Response {
$page = $this->deliveryTimeSelectionPageLoader->load($request, $context);
return $this->renderStorefront('@BerlDeliverySelector/storefront/custom/delivery-time-selection-page.html.twig',[
'page' => $page
]);
}
}