# LineItem in Warenkorb-Positionen erweitern

**URL:** https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813
**Category:** Programmierung
**Created:** [11. November 2024 um 08:29 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813 "2024-11-11T08:29:53Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [11. November 2024 um 08:29 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813/1 "2024-11-11T08:29:53Z")

</div>

Hallo,

ich möchte Warenkorb-Positionen um Informationen erweitern, die der Kunde auf der Produktdetailseite eingeben kann:

 ![LineItem](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/b/f/bf6c84c53fdd7b588fd22bb75b839da2b5d919a4.png)

Beispielsweise, wie hier in diesem Fall, ein eigenes Wunschlieferdatum, welches zu jeder Produktposition hinterlegt werden kann.

Wie ist der grundsätzliche Ansatz? Ich hätte da zwei Gedanken:

1. Sollte man den Controller `CartLineItemController.php` anpassen bzw. überschreiben und dort die zusätzlichen Informationen von der Detailseite mit einarbeiten.
2. Oder macht man eher einen Subscriber, der auf das `AfterLineItemAddedEvent` anspringt und dann den PayLoad für das LineItem um die gewünschte Information erweitert? Wie kommt man in diesem Fall an die Daten aus den zusätzlichen Eingabefeldern auf der Detailseite?

Was wäre der korrekte Weg, um die Warenkorb-Payloads zu erweitern? Hat jemand eventuell ein ähnliches Beispiel?

---

<div class="post-metadata">

### Author: ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)
#### Post date: [11. November 2024 um 08:59 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813/2 "2024-11-11T08:59:20Z")

</div>

Shopware Standard controller actions zu überschreiben hat natürlich oft sehr weitreichende Folgen. Am sinnvollsten (und am wenigstens invasiv) wäre wahrscheinlich das AfterLineItem event. Da kannst du über den request\_stack auf den request und auf das Formular zugreifen. Da sollten dann deine Infos drin stehen, die du ins payload des line items packen kannst.

Aber beachte: ein Standard Shopware product kann nur 1x im Warenkorb liegen. Das heißt, dass du den Parameter isMerged prüfen musst und dass dein Kunde nicht 2x das gleiche Produkt mit unterschiedlichen Eingaben im Warenkorb haben kann.

Viele Grüße

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [11. November 2024 um 09:09 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813/3 "2024-11-11T09:09:46Z")

</div>

Hallo @EikeBrandtWarneke,

vielen Dank für die Hinweise. Dann werde ich mal den Weg über das AfterLineItem event versuchen :-).

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [12. November 2024 um 07:16 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813/4 "2024-11-12T07:16:15Z")

</div>

Das mit dem Subscriber klappt nun gut, aber ich habe Probleme via request\_stack den Wert aus dem Formularfeld auszulesen:

`$desired_delivery_date = $this->requestStack->getCurrentRequest()->request->get('lq_desiredDeliveryDate');`

Ist der Befehl so korrekt, oder muss man das anders machen?

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [12. November 2024 um 07:27 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813/5 "2024-11-12T07:27:53Z")

</div>

hier, zum besseren Verständnis mal der komplette Subscriber:

```auto
class LineItemSubscriber implements EventSubscriberInterface
{

    /**
     * @var RequestStack
     */
    private $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            BeforeLineItemAddedEvent::class => 'beforeLineItemAdded'
        ];
    }  

    public function beforeLineItemAdded(BeforeLineItemAddedEvent $event)
    {
        $desired_delivery_date = $this->requestStack->getCurrentRequest()->request->get('lq_desiredDeliveryDate');

        // liefert neu hinzugefügtes LineItem im Warenkorb
        $lineItem = $event->getLineItem();

        $payLoad = $lineItem->getPayLoad();
        $payLoad['desired_delivery_date'] = $desired_delivery_date;
        $lineItem->setPayLoad($payLoad);

    }

}

```

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [12. November 2024 um 08:19 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813/6 "2024-11-12T08:19:20Z")

</div>

Okay. Ich weiß nicht, was ich beim ersten Versuch falsch gemacht habe, aber jetzt klappt es genau so.

Danke nochmal für den Tipp. Viele Grüße, Frank

---

<div class="post-metadata">

### Author: ![system](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/9/29c7587ba660f00e4995d1743162782e5d6d8653.svg) [@system](https://forum.shopware.com/u/system)
#### Post date: [12. Dezember 2024 um 08:19 UTC](https://forum.shopware.com/t/lineitem-in-warenkorb-positionen-erweitern/105813/7 "2024-12-12T08:19:47Z")

</div>

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.
