Prüfen, ob Artikel bereits im Warenkorb liegt (wie Shop...Basket_AddArticle_CheckBasketForArticle)?

Hallo zusammen,

was ist der beste Weg, um in Shopware 6 beim Hinzufügen eines Artikels in den Warenkorb zu testen, ob es sich um einen bereits im Warenkorb befindlichen Artikel handelt oder ob es ein neuer ist? In Shopware 5 konnte das per Subscription auf Shopware_Modules_Basket_AddArticle_CheckBasketForArticle gelöst werden.

Oder muss ich das manuell machen z.B. mit LineItemAddedEvent, dort prüfen und dann ggf. ein weiteres LineItem einfügen? Falls ja, wie erzeuge ich dann eine ID für das neue LineItem?

Danke.

Viele Grüße
Daniel

Hey,

hier: https://github.com/shopware/platform/tree/fb4bc791e185512bfde8cd0ea462b0cf527cf82f/src/Core/Checkout/Cart/Event

Im Basis Controller ist jedoch die LineItem-ID = die Produkt-ID wenn mich nicht alles täuscht, um das selbe Produkt mehrmals in den WK zu legen müsste man einen eigenen Controller schreiben, welches eine Random-ID für das LineItem hinterlegt.

Die Bestellungübersicht im Backend ist da auch falsch, man kann dort das Produkt anzeigen lassen, für den Router wird jedoch die LineItem-ID und nicht die Reference-ID verwendet. Bin aber imo zu beschäftigt um Bugs zu melden. :stuck_out_tongue:

Hi Moorleiche, danke.

Was meinst du mit dem Github-Link? Das Event kannte ich schon, siehe meinen zweiten Absatz :slight_smile:

LineItem-ID = die Produkt-ID - das ist interessant, so funktioniert das also. Hast du noch einen Tipp, wie so eine Random-ID dann erzeugt werden kann?

https://github.com/shopware/platform/blob/fb4bc791e185512bfde8cd0ea462b0cf527cf82f/src/Storefront/Controller/CartLineItemController.php#L251

Hier die ID-Ändern.

https://github.com/shopware/platform/blob/6.1/src/Storefront/Resources/views/storefront/page/product-detail/buy-widget-form.html.twig#L44

Wahrscheinlich der einfachere Weg -> das Produkt über ein Freitextfeld als stackable markieren. Für die markierten Produkte  das Template hier ändern:

zu

weiß nicht ob md5(date()) im Twig geht, aber hier muss auf jeden Fall ein random Hash rein, keine Produkt-ID

1 „Gefällt mir“

In Ordnung, danke. Das wird probiert.