Abfolge Events

Hallo zusammen,

folgendes Problem: ich verwende folgende 2 Events um im Warenkorb was zu machen:

 Shopware\_Modules\_Basket\_getPriceForUpdateArticle\_FilterPrice

 Shopware\_Modules\_Basket\_GetBasket\_FilterItemEnd

das Problem ist es muss erst Shopware_Modules_Basket_GetBasket_FilterItemEnd dann Shopware_Modules_Basket_GetBasket_FilterItemEnd

ausgeführt werden. Das ist derzeit nicht so. Kann man die Abfolgen irgendwie anpassen? Vielen Dank.

Die Abfolge kann man nicht ändern. Der Prozess von Shopware sieht das so vor. Je nachdem was du dort machst, musst es irgendwie anders lösen.

Vielleicht kann mir ja jemand einen Tip nach dem Motto wie mache ich das geben. Ich muss einen Preis Aufschlag in Abhänigkeit des Warenkorbes festlegen. Dazu benutze ich das Event:

 Shopware\_Modules\_Basket\_GetBasket\_FilterItemEnd

 um die Höhe des Warenkorbes zu bestimmen und das Event:

 Shopware\_Modules\_Basket\_getPriceForUpdateArticle\_FilterPrice

um dann einen Preis in Abhänigkeit von der Höhe anzupassen. Dazu muss dann nur das Event Shopware_Modules_Basket_GetBasket_FilterItemEnd vor

 Shopware\_Modules\_Basket\_getPriceForUpdateArticle\_FilterPrice ausgeführt werden sonst klappt das nicht. Nu stehe ich auf dem Schlauch wie weiter. Gibt es eine andere Möglichkeit?

oder einfacher gefragt gibt es anstatt:

 Shopware\_Modules\_Basket\_getPriceForUpdateArticle\_FilterPrice

ein anderes Event das ich nehmen könnte?

Die Höhe des Warenkorbs kannst du auch aus dem Basket Service abrufen. Den musst du nicht extra berechnen. Dann brauchst du auch nur noch ein Event. Ganz dirty geht das über Shopware()->Modules()->Basket(). Dahinter steckt die Klasse sBasket. Musst du mal schauen welche Methode dir da den Warenkorb Wert zurück gibt. Besser wäre es den Service aus dem DI Contrainer zu nehmen und ihn dir per DI in den Konstrutor deine Subscriber Klasse zu schreiben.

$this->container->get(‚modules‘)->Basket()

viele Dank das hat mir schon mal sehr doll weiter geholfen. Langsam bin ich auch etwas weiter. Noch eine Frage gibt es eine Möglichkeit in einem Event einen Artikel mit dem Aufruf einer Funktion in den Warenkorb zu legen?

 

Klaro. Wir wäre es mit sBasket::sAddArticle()? Alles Warenkorb relevante findest du eben in der sBasket Klasse. Artikel in den Korb legen, wieder entfernen, Warenkorbhöhe abrufen, usw.

1 „Gefällt mir“

Vielen Dank für die Antwort und die Mühe. Stehe leider noch am Anfang.

 

Kein Ding. Wir haben alle mal so angefangen :wink:

Wo ich aber immer noch nicht weiter komme ist das Zufügen von Artikeln zum Warenkorb. Ist das falsch:

 Shopware()-\>Modules()-\>Basket()-\>sAddArticle(15, 12);

id 15

Menge 12

 

Schau dir doch mal die entsprechende Funktion und was sie erwartet genauer an: shopware/sBasket.php at 5.4 · shopware/shopware · GitHub

Viele Grüße

sorry und noch mal vielen Dank. Schönes Wochenende dir.

 

 

was aber ein interessantes Ding ist wenn ich

 Shopware()-\>Modules()-\>Basket()-\>sUpdateArticle(208,1);

Wobei 208 die Zeile im Basket ist mache sagt der gute als Reaktion:

Fatal error : Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in shopware\vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php on line 168

 

Hallo,

naja der Fehler sagt ja nur aus, das nicht genug Arbeitsspeicher für den Prozess zur Verfügung steht, siehe: https://www.shopdoktor.com/shopware-fehler-allowed-memory-size-of-x-bytes-exhausted-beheben/ .

Grüße

Sebastian