# Falscher Variablenwert in Ajax-Cart

**URL:** <https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167>\
**Category:** Themes & Design\
**Created:** [21. Dezember 2018 um 11:42 UTC](https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167 "2018-12-21T11:42:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [21. Dezember 2018 um 11:42 UTC](https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167/1 "2018-12-21T11:42:49Z")

</div>

Am letzen Arbeitstag in diesem Jahr wollte ich noch ein wenig die Zeit tot-schlagen und etwas am Shop “basteln”.

Konkret:  
Den Warenkorbhinweis “noch xxx € bis zum kostenlosen Versand” möchte ich auch in der OffCanvas-Cart einbauen. (mit einem Link auf eine Kat mit Preisfilter wenn Wert unter xx EUR)  
Dazu verwendet wird die Variable: **{$sShippingcostsDifference}** sie funktioniert grundsätzlich auch… ABER:  
Sie wird bei der “Ajax-Aktion in den Warenkorb legen” nicht aktualisiert, erst nach einem echten Seitenaufruf&nbsp;&nbsp;einem Aufruf der echten Cart wird diese Variable richtig gesetzt.  
Ist das ein “BUG” oder ist das von “Shopware” einfach nur so gewollt / übersehen worden?

Nicht schön, wenn ich einen “Versandkostenfreien Artikel” in der Cart habe, ab noch XXX Eur bis zum “kostenfreien Versand” angezeigt werden.  
WENN so eine Variable im Theme im Ajax-Template angeboten wird, sollte sie grundsätzlich auch den richtigen Wert haben. Dann lieber gar nicht die Variable ans Template übergeben, als einen falschen Wert&nbsp; ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink")

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [21. Dezember 2018 um 12:14 UTC](https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167/2 "2018-12-21T12:14:40Z")

</div>

Hintergrund war bisher immer, dass der Off-Canvas noch keine Warenkorb-Berechnung durchführen soll, um so möglichst performant zu bleiben. Wenn jedes öffnen/schließen die Berechnung antriggert, ist das zusätzliche Performance.

Das Thema ist thematisch mit dem „Versandkosten im Warenkorb anzeigen“ verbunden. Das ist der gleiche grund, warum wir dort keine Versandkosten anzeigen. Der Off-Canvas ist so gebaut, dass er nur die Preise zusammenaddiert und keinen Warenkorb an sich berechnet.&nbsp;

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [21. Dezember 2018 um 12:40 UTC](https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167/3 "2018-12-21T12:40:21Z")

</div>

Kein Problem, muss ich mir 2019 selber was basteln&nbsp; ![Wink](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wink.png "Wink")  
Er muss es ja nicht bei jedem „öffnen“ berechnen, es reicht ja bei einer „Aktion“ wie „reinlegen oder löschen“ und dann in die Session schreiben - macht die echte Cart ja auch, oder wo kommt der Wert sonst später her?&nbsp;Egal - guck ich mir mal für ein kleines Plugin an. ![Wearing-Sunglasses](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wearing-sunglasses.png "Wearing-Sunglasses")

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [3. Januar 2019 um 10:25 UTC](https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167/4 "2019-01-03T10:25:55Z")

</div>

Moin und ein frohes Neues…

neues Jahr, altes Problem - und gleich muß ich Dir ein wenig widersprechen \*grins\*

Betrachten wir die [checkout.php](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Controllers/Frontend/Checkout.php) ein wenig genauer:  
Sowohl die reguläre Cart als auch die Ajax-Cart benutzen die gleiche Funktion zur Ermittlung der Daten - die Funktion [getBasket()](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Controllers/Frontend/Checkout.php#L1025).  
Ab hier werden u.A. die **sShippingcostsDifference&nbsp;** berechnet:  
[shopware/Checkout.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Controllers/Frontend/Checkout.php#L1076)  
Für die AjaxCart wird dann hier der Wert gesetzt:  
[shopware/Checkout.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Controllers/Frontend/Checkout.php#L1612)  
Für die reguläre Cart hier:  
[shopware/Checkout.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Controllers/Frontend/Checkout.php#L155)

Inder [cartAction()](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Controllers/Frontend/Checkout.php#L140)&nbsp;werden vor dem Aufruf von getBasket() wesentlich mehr Class-Variablen initialisiert, als in der [ajaxCartAction()](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Controllers/Frontend/Checkout.php#L1604)&nbsp;- was dann wohl zu einer fehlenden / fehlerhaften Differenz-Berechnung führen&nbsp;dürfte.

Der “Autor” der ajaxCart wird sich ja etwas dabei gedacht haben, dass er u.A.&nbsp; **sShippingcostsDifference** &nbsp;ans Theme übergeben möchte, aber dann bitte richtige Werte&nbsp; ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink")

Aktuell ist mein Basteltrieb eher wieder ein wenig erloschen, aber wenn ich den “Hinweis” dann doch mal wieder ausprobieren möchte, werde ich wohl mal die checkout.php ein wenig patchen müssen&nbsp; ![Wearing-Sunglasses](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/301eaa4db0af1251d93dae7904e5b71a4b15e729.png "Wearing-Sunglasses")

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [3. Januar 2019 um 13:15 UTC](https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167/5 "2019-01-03T13:15:07Z")

</div>

Muss ich mir in der nächsten Woche nochmal genauer ansehen. Man lernt ja nie aus.

Willst du hier vielleicht noch ein Ticket einstellen?

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [3. Januar 2019 um 13:41 UTC](https://forum.shopware.com/t/falscher-variablenwert-in-ajax-cart/57167/6 "2019-01-03T13:41:41Z")

</div>

Diese Woche ist Büro noch auf Sparflamme, ein bischen Server hier updaten, dort ein wenig Gerätewartung etc.  
Ehe ich mich mit einem Ticket in die Nesseln setze, muss ich mich noch weiter damit befassen und ggf. noch ein bischen gegen testen&nbsp; ![Wink](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wink.png "Wink")  
Wenn ich mir 100% sicher bin, mache ich dann ein Ticket auf&nbsp; ![Wearing-Sunglasses](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wearing-sunglasses.png "Wearing-Sunglasses")
