# LineItemAddedEvent und eigene Payloads

**URL:** https://forum.shopware.com/t/lineitemaddedevent-und-eigene-payloads/69826
**Category:** Programmierung
**Created:** [24. September 2020 um 10:22 UTC](https://forum.shopware.com/t/lineitemaddedevent-und-eigene-payloads/69826 "2020-09-24T10:22:18Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Moorleiche](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@Moorleiche](https://forum.shopware.com/u/Moorleiche)
#### Post date: [24. September 2020 um 10:22 UTC](https://forum.shopware.com/t/lineitemaddedevent-und-eigene-payloads/69826/1 "2020-09-24T10:22:18Z")

</div>

Moin,

1. ist es möglich über ein&nbsp;LineItemAddedEvent den Payload des betroffenen LiteItems zu ändern (Bevor das LineItem in den Warenkorbe kommt)?
2. Wäre es möglich in dem Event an den RequestDataBag zu gelangen?
3. Ist ein persist des Warenkorbes in dem Event möglich?

Würde es evtl nicht Sinn machen, noch ein Event davor zu schalten? (Sonst muss man den CartLineItemController immer neu schreiben, nur weil man das LineItem erweitern möchte, bevor es in den Warenkorb gelegt wird).

Viele Grüße

Philipp

---

<div class="post-metadata">

### Author: ![oliverriske](https://avatars.discourse-cdn.com/v4/letter/o/ebca7d/32.png) [@oliverriske](https://forum.shopware.com/u/oliverriske)
#### Post date: [24. September 2020 um 10:29 UTC](https://forum.shopware.com/t/lineitemaddedevent-und-eigene-payloads/69826/2 "2020-09-24T10:29:15Z")

</div>

\<?php

&nbsp; namespace&nbsp;Nextag\Checkout\Subscriber; &nbsp; use&nbsp;Shopware\Core\Checkout\Cart\Event\LineItemAddedEvent; use&nbsp;Symfony\Component\EventDispatcher\EventSubscriberInterface; use&nbsp;Symfony\Component\HttpFoundation\RequestStack; &nbsp; class&nbsp;LineItemAdded&nbsp;implements&nbsp;EventSubscriberInterface { &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;$requestStack; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;\_\_construct(RequestStack&nbsp;$requestStack) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-\\>requestStack&nbsp;=&nbsp;$requestStack; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;function&nbsp;getSubscribedEvents() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LineItemAddedEvent::class&nbsp;=\\>&nbsp;'onLineItemAdded' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;onLineItemAdded(LineItemAddedEvent&nbsp;$event) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lineItem&nbsp;=&nbsp;$event-\\>getLineItem(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($this-\\>requestStack-\\>getCurrentRequest()-\\>get('lineItems')&nbsp;as&nbsp;$key&nbsp;=\\>&nbsp;&nbsp;$item)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($lineItem-\\>getReferencedId()&nbsp;==&nbsp;$key&nbsp;&&&nbsp;isset($item['customData']))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lineItem-\\>setPayloadValue('customData',&nbsp;$item['customData']); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($lineItem-\\>getReferencedId()&nbsp;==&nbsp;$key&nbsp;&&&nbsp;isset($item['isSample']))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lineItem-\\>setPayloadValue('isSample',&nbsp;$item['isSample']); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($lineItem-\\>getReferencedId()&nbsp;==&nbsp;$key&nbsp;&&&nbsp;isset($item['sampleNo']))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lineItem-\\>setPayloadValue('sampleNo',&nbsp;$item['sampleNo']); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} }

---

<div class="post-metadata">

### Author: ![WernerBu](https://avatars.discourse-cdn.com/v4/letter/w/71c47a/32.png) [@WernerBu](https://forum.shopware.com/u/WernerBu)
#### Post date: [24. September 2020 um 10:56 UTC](https://forum.shopware.com/t/lineitemaddedevent-und-eigene-payloads/69826/3 "2020-09-24T10:56:20Z")

</div>

Hallo „Moorleiche“,

1. fände ich auch nicht schlecht, da im LineItem ja nur die id, type, referenceId,quantity übergeben werden,

wenn ich mich jetzt nicht total täusche:

[https://github.com/shopware/platform/blob/da9e08b8a460f79f8e9c503558e8bc516176c3b5/src/Storefront/Controller/CartLineItemController.php#L238](https://github.com/shopware/platform/blob/da9e08b8a460f79f8e9c503558e8bc516176c3b5/src/Storefront/Controller/CartLineItemController.php#L238)

[oliverriske](https://forum.shopware.com/profile/33218/oliverriske)@ : Wüßte nicht, wie „$item[‚customData‘]“ funktionieren sollte, ist ja nicht vorhanden. Würde mich aber gerne eines besseren belehren lassen!

&nbsp;

Habe auch ziemlich mit der Funktionalität von „addLineItems“ im CartLineItemController zu kämpfen, klar, kann ich dekorieren oder überschreiben oder

gleich die Url&nbsp; ändern, mach ja z.B. das Plugin „Custom Products“&nbsp; eben genau so. Nur wenn man das Plugin braucht aber selbst noch was hinzufügen will,

wird es sehr schwierig. Zwei Plugins, die die Methode überschreiben…

Finde diese Methode alles andere als gut durchdacht.

Gruß,

Werner.

---

<div class="post-metadata">

### Author: ![Moorleiche](https://avatars.discourse-cdn.com/v4/letter/m/6f9a4e/32.png) [@Moorleiche](https://forum.shopware.com/u/Moorleiche)
#### Post date: [24. September 2020 um 11:36 UTC](https://forum.shopware.com/t/lineitemaddedevent-und-eigene-payloads/69826/4 "2020-09-24T11:36:25Z")

</div>

@oliverriske‍

Der Ansatz ist gar nicht mal so schlecht!

Das LineItem ist doch aber meines Wissens bereits im WK bevor das Event angestoßen wird oder?

---

<div class="post-metadata">

### Author: ![lhairman](https://avatars.discourse-cdn.com/v4/letter/l/cdc98d/32.png) [@lhairman](https://forum.shopware.com/u/lhairman)
#### Post date: [12. Dezember 2020 um 13:03 UTC](https://forum.shopware.com/t/lineitemaddedevent-und-eigene-payloads/69826/5 "2020-12-12T13:03:03Z")

</div>

Danke&nbsp;@oliverriske&nbsp;! Funktioniert perfekt für mich.&nbsp;

Die folgende Anweisung muss dann noch in die services.xml

&nbsp;
