Verhindern, dass man ein Produkt (inkl. Varianten) mehrfach in den Warenkorb legen kann

Hallo zusammen,

Ich hab ein uraltes Problem, welches ich irgendwann schon mal gelöst habe, aber eben nicht in Shopware 5 :wink:
Es geht darum, dass ich einen Artikel habe, welcher nicht mehrfach im Warenkorb landen soll: Maximalabnahme greift nicht, da es ein Variantenartikel ist und es sollen nicht mehrere Varianten desselben Artikels im Warenkorb liegen.

Mein alter Lösungsweg ging über Hooks und dann habe ich glaube ich eine AddArticle-Methode mit Hilfe eines Hooks ersetzt. Das schien mir doch sehr unschön, falls sich die Art und Weise wie Shopware Artikel in den Warenkorb legt einmal ändert.

Ich dachte, ich probiere einen neuen Lösungsweg und halte mich an die Anleitungen aus dem Developer Guide. Dort heißt es sinngemäß:
Wenn man z.B. verhindern möchte, dass ein Artikel zum Warenkorb hinzugefügt wird, so sollte man das AddArticle-Event verwenden.

Das Event habe ich dann auch “subscribed” und versuche in meiner Methode AddArticle_hack das ganze zu lösen.
$this->subscribeEvent(‘Shopware_Modules_Basket_AddArticle_Start’, ‘AddArticle_hack’);

Das schöne ist ja auch, dass man dort mit einem einfachen “return false” das Hinzufügen verhindern könnte, aber mir gelingt es nicht, von dort aus auf den aktuellen Warenkorb zuzugreifen. Ich müsste aber natürlich auf den Warenkorb und seine Artikel zugreifen, um die Bedingung entsprechend formulieren zu können.

Meine Frage lautet also: Wie greife ich von meinem Event Listener aus auf den Warenkorb zu??? Das müsste doch möglich sein! Falls nicht, würde ich mich freuen, wenn man mir eine Inspiration geben könnte, wie man dies am saubersten löst. Ich will jedenfalls keine so wichtige, hauseigene Methode “replacen”.

Vielen Dank im Voraus!


Now in english:
I want to avoid, that it is possible to add two variants of the same article to the cart. My (unsuccessfull) solution is to subscribe the “Shopware_Modules_Basket_AddArticle_Start”-Event. This would be great, because a simple “return false” there could prevent me from adding an article to the cart. Unfortunately i don’t know, how i can reach the Basket-Items from my event-listener to check, whether there is already the same article in the basket (or another variant from the same article).

Thank you in advance!

Wie wurde dies am Ende gelöst? #push