# Wie kann man Pseudoartikel über Controller in den Warenkorb legen?

**URL:** <https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817>\
**Category:** Shopware 6 (German)\
**Tags:** programming\
**Created:** [11. November 2024 um 12:15 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817 "2024-11-11T12:15:30Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [11. November 2024 um 12:15 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/1 "2024-11-11T12:15:30Z")

</div>

Heute mal kein Problem aus einem Kundenshop, sondern vielmehr Gedanken zu einem eigenen SW6 Shop. Hintergrund ist der, dass ich bereits einen SW5 habe und dort einen eigenen Konfigurator habe. Nach und nach mache ich mir natürlich auch Gedanken bezüglich Migration zu SW6 (mein Lieblingsthema, da kann nix schief gehen).

Nun ist es allerdings so, dass ich für mein Vorhaben in SW6 über einen Frontend Controller Pseudoartikel erzeugen muss, die dann in den Warenkorb gelegt werden sollen. Hier muss ich gestehen, dass ich absolut überhaupt kein Plan habe wie ich das umsetzen könnte.

Ich weiß wie ich bestehende Artikel in den Warenkorb legen kann, aber eben nicht Artikel die es im Bestand gar nicht gibt. Wo ich also keine UUID zum Artikel habe.

**Wenn irgendwer irgendwelche Tipps hat welche mich zum Ziel führen, würde das mein Herz erfreuen 🙂**

---

<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 12:33 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/2 "2024-11-11T12:33:44Z")

</div>

Siehe [Add Cart Items | Shopware Documentation](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/cart/add-cart-items.html)

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [11. November 2024 um 12:51 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/3 "2024-11-11T12:51:07Z")

</div>

Werde ich testen. Aber ich befürchte dass sich dieses Beispiel auf bestehende Artikel bezieht.

---

<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 12:54 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/4 "2024-11-11T12:54:46Z")

</div>

Nein, da geht es auch um custom line items mit eigener factory und cart processor.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [11. November 2024 um 14:15 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/5 "2024-11-11T14:15:11Z")

</div>

Hm, ok. So ganz klappt das noch nicht bzw. es wird gar nichts angezeigt. Kommt auch keine Fehlermeldung.

Versuch 1 - ohne Erfolg

```auto
$lineItem = $this->factory->create([
'type' => LineItem::CUSTOM_LINE_ITEM_TYPE,
'referencedId' => '09900000000000000000000000000001',
'quantity' => 2,
'payload' => ['price' => 9.99]
], $context);
$this->cartService->add($cart, $lineItem, $context);

```

Versuch 2 - ohne Erfolg

```auto
$lineItem = new LineItem('09900000000000000000000000000001', LineItem::CUSTOM_LINE_ITEM_TYPE, null, 2);
$lineItem->setStackable(true);
$lineItem->setRemovable(true);
$lineItem->setLabel("test");
$lineItem->setPriceDefinition(new AbsolutePriceDefinition(9.99, null));
$this->cartService->add($cart, $lineItem, $context);

```

Vielleicht hat jemand noch eine Idee?

---

<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 14:50 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/6 "2024-11-11T14:50:59Z")

</div>

Jedes line item im cart ohne einen processor fliegt automatisch (wieder) raus. Du solltest die Doku vielleicht erst einmal -ganz- lesen und abarbeiten 😉

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [11. November 2024 um 15:29 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/7 "2024-11-11T15:29:29Z")

</div>

> [@EikeBrandtWarneke](#):
>
> Jedes line item im cart ohne einen processor fliegt automatisch (wieder) raus.

Ich weiß leider was du meinst ☹ Der Handler ist eingebaut. Processor ist eingebaut, jedoch beim Test nichts. Nicht mal eine Fehlermeldung.

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [13. November 2024 um 16:23 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/8 "2024-11-13T16:23:48Z")

</div>

naja „rausfliegen“ wird das Item nicht, aber der Warenkorb weiß nicht wie das Custom-Item angezeigt werden soll ! sprich es braucht ein Template. Mittlerweile muss dafür nur eine Stelle angepasst werden.

ABER nach meiner leidigen Erfahrung hat ein CustomItem den Nachteil, dass sich dieses nicht zur „Zusammenarbeit“ mit anderen Plugins bewegen lässt. Alle Plugin, die in den Warenkorb „schauen“ (Processor oder Collector) und dann nach PRODUCT\_ITEMs filtern funktionieren nicht mehr (Rabatte, Zuschläge, Versandkosten-Berechnung, etc.).

Mein Weg war dann, den „Type“ in einem CustomField zu speichern. Im Item bleibt das aber ein Product.

---

<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:** [13. November 2024 um 16:49 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/9 "2024-11-13T16:49:45Z")

</div>

Nein, jedes custom line item (mit einem eigenen typ) ohne processor wird aus dem cart gelöscht. Oder noch technischer erklärt: jedes custom line item ohne processor wird vom cart nicht in den calculated cart übernommen.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [14. November 2024 um 07:16 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/10 "2024-11-14T07:16:25Z")

</div>

> [@chamaw](#):
>
> PRODUCT\_ITEM

Ja hatte ich ursprünglich auch versucht, aber leider keine Lösung gefunden um das zum laufen zu bekommen.

---

<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:** [14. November 2024 um 08:30 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/11 "2024-11-14T08:30:14Z")

</div>

Beschäftigt euch doch mit dem Beispiel aus der Doku. Das sollte eigentlich einwandfrei funktionieren. Bei konkreten Fragen könnt ihr diese natürlich gerne hier stellen.

Oder: schaut euch eines der 2.000 Plugins im Store an, die eigene custom line items verwenden. Die Plugins sind ja alle quelloffen.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [14. November 2024 um 09:19 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/12 "2024-11-14T09:19:06Z")

</div>

> [@EikeBrandtWarneke](#):
>
> Beschäftigt euch doch mit dem Beispiel aus der Doku.

Was denkst du was ich mache 🤦‍♂️

> [@EikeBrandtWarneke](#):
>
> Oder: schaut euch eines der 2.000 Plugins im Store an

Ja klar, ich buche jetzt 100 Plugins damit eins finde wo ich sehen kann wie das funktioniert. Sorry, aber das ist eine blöde Idee und nicht wenig hilfreich.

---

<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:** [14. November 2024 um 11:10 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/13 "2024-11-14T11:10:12Z")

</div>

Das war ja nur eine Empfehlung, wenn dir die Doku nicht ausreicht. Mir persönlich hilft es immer wenn ich mir Software von Dritten anschaue, die meine oder ähnliche Probleme lösen. Und es gibt nun mal zahlreiche Plugins - konfiguratoren, Bundes, pseudo Produkte, Optionen etc. - die custom line Items verwenden und die Probleme, vor denen du gerade stehst, bereits gelöst haben.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [14. November 2024 um 12:53 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/14 "2024-11-14T12:53:07Z")

</div>

> [@EikeBrandtWarneke](#):
>
> Und es gibt nun mal zahlreiche Plugins - konfiguratoren, Bundes, pseudo Produkte, Optionen etc.

Nun ja, die Sache ist so dass ich ich im Vorfeld nicht korrekt erkennnen kann wie ob in dem Plugin auch wirklich Pseudo-Produkte in den Warenkorb gelegt werden. In einem Plugin XYZ heißt es auch, dass man Pseudo-Produkte anlegen kann, sind aber in wirklichkeit Produkte die nur im Listing etc… nicht auftauchen und werden im Backend fest definiert. Das geht alles an dem vorbei was ich gern umsetzen möchte.

Natürlich habe ich mir schon etliche Beispiele angesehen, aber sie alle basieren auf echte Produkte die in den Warenkorb legt werden. Und bei den hier verlinkten Beispielen passiert einfach nichts. Vielleicht sind die auch gar nicht mehr aktuell.

Von daher dachte ich, dass sich jemand ggf. damit schon mal wirklich beschäftigt hat.

Hier mein aktueller Versuch:

```auto
  #[Route(path: '/picture-configurator', name: 'frontend.picture-configurator', methods: ['GET'])]
  public function PictureConfigurator(Request $request, SalesChannelContext $context): Response
  {

    $page = $this->genericPageLoader->load($request, $context);

    // only test
    $ProductId = Uuid::randomHex();
    $productLineItems = new LineItem( $ProductId, LineItem::PRODUCT_LINE_ITEM_TYPE, $ProductId, 2 );
    $productLineItems->setStackable(true);
    $productLineItems->setRemovable(true);
    $productLineItems->setLabel("test");
    $productLineItems->setPriceDefinition(new AbsolutePriceDefinition(9.99, null));

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

    return $this->renderStorefront('@iffConfigurator/storefront/page/picture-configurator.html.twig', ['page' => $page] );

  }

```

---

<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:** [14. November 2024 um 13:00 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/15 "2024-11-14T13:00:49Z")

</div>

Nein, du wirst wahrscheinlich niemals DAS Plugin finden, das EXAKT deine Anforderungen für dich löst - aber sie können dazu dienen dir die Konzepte und Grundlagen zu vermitteln.

Für deinen aktuellen Versuch: du könntest dir jetzt z.B. einmal den ProductCartProcessor anschauen, um heraus zu finden wie die Prozesse im Warenkorb ablaufen und warum dein „Produkt“ wieder raus fliegt.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![area-net-gmbh](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/area-net-gmbh/32/21995_2.png) [@area-net-gmbh](https://forum.shopware.com/u/area-net-gmbh)\
**Post date:** [14. November 2024 um 13:21 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/16 "2024-11-14T13:21:48Z")

</div>

Über den [Add Cart Collector/Processor | Shopware Documentation](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/cart/add-cart-processor-collector.html) kannst du z.B. eigene, freie Items dem Warenkorb hinzufügen. Haben wir z.B. mit Zuschlägen/Mindestbestellwerte schon gemacht.

Hier ein Beispiel:

> <https://github.com/AREA-NET-GmbH-Shopware-Agentur/shopware6-plugin-minimum-order-value/blob/main/AreanetMinimumOrderValue/src/Core/Checkout/Cart/MinimumOrderValueProcessor.php>

---

<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:** [14. November 2024 um 13:26 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/17 "2024-11-14T13:26:17Z")

</div>

Das ist auch wieder ein vollkommen anderes Konzept. Du legst nicht über den cart service ein line item in den cart und schleifst es durch einen processor immer mit/durch, sondern du umgehst den cart komplett und fügst bei jedem Durchlauf des processors dein line item direkt in den calculated cart. Das kannst du z.B. bei fest definierten prozentualen Aufschlägen auf den Warenkorb machen - aber nicht, wenn du z.B. Eingaben akzeptieren möchtest (z.B. eine Option „+ Geschenkpapier“ auf der PDP). Außerdem führt das zu einem extrem „merkwürdigem“ Verhalten, wenn du eine Bestellung manuell in der Administration anpassen möchtest.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [14. November 2024 um 13:29 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/18 "2024-11-14T13:29:07Z")

</div>

> [@EikeBrandtWarneke](#):
>
> du könntest dir jetzt z.B. einmal den ProductCartProcessor anschauen

Ja das wird wohl aktuell das beste sein. Irgendwo da bleibt mein Eintrag hängen.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [14. November 2024 um 14:45 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/19 "2024-11-14T14:45:54Z")

</div>

Kurzes Feedback:

Der erste Eintrag mit einem echten Pseudo-Produkt hat nun geklappt 🙂

Allerdings darf ich dazu (nicht wie in der Beschreibung steht) LineItem::PRODUCT\_LINE\_ITEM\_TYPE als Konstante benutzen, dass überschreibt mir sogar bestehende Produkte im Warenkorb. Ich musste eine eigene Konstante definieren, welche im Handler übereinstimmen muss. Und das war die Ursache warum nichts ging.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [14. November 2024 um 15:15 UTC](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817/20 "2024-11-14T15:15:02Z")

</div>

Muss mich korrigieren:

In meinem Falle muss ich mit ‚CUSTOM\_LINE\_ITEM\_TYPE‘ arbeiten. Damit werden beim Pseudo-Artikel im Warenkorb auch Versandkosten angezeigt und der Artikel ist Bestellbar 🙂

Jetzt muss ich noch knobeln, wie ich eine Pseudo-Produktnummer mit übergebe.

[Nächste Seite](https://forum.shopware.com/t/wie-kann-man-pseudoartikel-ueber-controller-in-den-warenkorb-legen/105817.md?page=2)
