# Bestellung Kommentar setzen (Event) vor Speichern

**URL:** https://forum.shopware.com/t/bestellung-kommentar-setzen-event-vor-speichern/67896
**Category:** Allgemein
**Created:** [24. Juni 2020 um 10:15 UTC](https://forum.shopware.com/t/bestellung-kommentar-setzen-event-vor-speichern/67896 "2020-06-24T10:15:56Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)
#### Post date: [24. Juni 2020 um 10:15 UTC](https://forum.shopware.com/t/bestellung-kommentar-setzen-event-vor-speichern/67896/1 "2020-06-24T10:15:56Z")

</div>

Hallo,

wir möchten gern bei jeder Bestellung automatisch noch einen Kommentar dazuspeichern, der sich aus Freitextfeldern in der Confirm-Form bezieht.

Dafür müssen wir uns natürlich an ein Event oder eine Art Hook wie aus SW5 hängen.

Leider habe ich hier nur ein Event gefunden, das in Zusammenhang mit dem Bestellung-Speichern steht. Wie ich das sehe gibt es nur den Einstiegspunkt über **CheckoutController::order**

CheckoutController

```
    public function order(RequestDataBag $data, SalesChannelContext $context, Request $request): 
    Response
    {
        [...]

        try {
            $orderId = $this->orderService->createOrder($data, $context);
            $this->addAffiliateTracking($orderId, $request, $context);
            $finishUrl = $this->generateUrl('frontend.checkout.finish.page', [
                'orderId' => $orderId,
            ]);

            $response = $this->paymentService->handlePaymentByOrder($orderId, $data, $context, $finishUrl);

            if ($response !== null) {
                return $response;
            }

            return new RedirectResponse($finishUrl);
        } 

        [...]

        return $this->forwardToRoute('frontend.checkout.confirm.page', ['formViolations' => $formViolations]);
    }

```

landet dann hier&nbsp;in **OrderService.php**

```
    public function createOrder(DataBag $data, SalesChannelContext $context): string
    {
        $this->validateOrderData($data, $context);

        $cart = $this->cartService->getCart($context->getToken(), $context);

        return $this->cartService->order($cart, $context);
    }

```

und dann wiederum hier:

```
    public function order(Cart $cart, SalesChannelContext $context): string
    {
        [...]

        $orderEntity->setOrderCustomer(
            $this->fetchCustomer($orderEntity->getId(), $context->getContext())
        );

        $orderPlacedEvent = new CheckoutOrderPlacedEvent(
            $context->getContext(),
            $orderEntity,
            $context->getSalesChannel()->getId()
        );

        $this->eventDispatcher->dispatch($orderPlacedEvent);

        $this->persister->delete($context->getToken(), $context);
        unset($this->cart[$calculatedCart->getToken()]);

        return $orderId;
    }

```

&nbsp;

in der letzten Methode wird ein Event dispatched:&nbsp; **CheckoutOrderPlacedEvent**

aber das ist ja bereits NACH dem Speichern. Natürlich könnte man sich daran hängen und dann den Kommentar in die Datenbank schieben, aber dann steht er nicht in der Bestellbestätigungs-Mail, welche ja auch durch dieses Event getriggert wird…

Außerdem habe ich in diesem Event ja dann keinen Zugriff mehr auf den Inhalt des Confirm-Formulares …

&nbsp;

hat jemand eine Lösung? Es gibt wohl noch zu wenig Event/Hook-Möglichkeiten…

---

<div class="post-metadata">

### Author: ![KaleAndMe](https://avatars.discourse-cdn.com/v4/letter/k/b3f665/32.png) [@KaleAndMe](https://forum.shopware.com/u/KaleAndMe)
#### Post date: [23. Juli 2021 um 09:57 UTC](https://forum.shopware.com/t/bestellung-kommentar-setzen-event-vor-speichern/67896/2 "2021-07-23T09:57:05Z")

</div>

Moin, lang lang ists her, aber hast du eine Lösung gefunden?

Ich würde gerne ein Lieferdatum in eine bereits angelegte Order-Extension-Tabelle speichern und ähnlich wie bei dir wäre es sehr gut, wenn das vor dem Mailversand passieren würde. Auch sehe ich im Moment Probleme damit die Daten über den checkout zu sichern.
