Fehler mit dem Warenkorb

  • Hallo,


    in unserem Shop ist bei einigen Artikeln die Höchstkaufmenge gesetzt, ansehen kann man sich das im Testshop unter https://shopt.hisb.de/ beim Wandkalender 2023. Mit dem Plus-Button kann man die Höchstkaufmenge nicht überschreiten, aber indem man etwas höheres, z.B. eine 3 in das Feld einträgt. Klickt man dann auf „In den Warenkorb“ kommt nur die Sanduhr, sonst tut sich nichts, solange man auch wartet. Man kann aber rechts oben auf den Link „Warenkorb“ klicken, dann wird der auch angezeigt und ist leer. Das wäre noch kein ernstes Problem, wenn man nicht dasselbe im Warenkorb selbst macht. Trägt man dort 3 ein und klickt dann rechts daneben auf Mengenangabe aktualisieren, dann kommt eine Fehlerbox „Error updating cart“, die sich bestätigen läßt. Danach ist weiter der Warenkorb zu sehen und es steht die 3 als Menge da. Geht man weiter einkaufen o.ä. dann führt jeder weitere Versuch, den Warenkorb erneut zu öffnen, zur Fehlermeldung „0 - Argument number specifier must be greater than zero and less than 2147483647“.


    Anscheinend wird da was in einem Cookie gespeichert, denn das bleibt solange so, bis ich den Browser (egal welchen) schließe, denn dabei werden die gelöscht. Lasse ich die Cookies nicht löschen, dann ist das Verhalten auch nach dem nächsten Start des Browsers so wie beschrieben. D.h., daß Kunden, die Cookies nicht löschen lassen, nie wieder den Warenkorb öffnen können.


    Um das zu vermeiden, scheint es mir sinnvoll, daß der Shop nach der Fehlermeldung „Error updating cart“ die eingetragene Menge auf den Höchstwert setzt und nochmal aktualisiert.


    Die Fehlermeldung selbst (Error updating cart) habe ich auch in keiner INI-Datei gefunden, sonst würde ich das mal eindeutschen.


    Hier läuft VM 4.0.12 10777 mit J 4.3.4 und PHP 8.1.24, Shop-Template ist Standard/Default.


    Besten Gruß

  • Servus,


    der Fehler "Error updating cart" kommt aus der JavaScript-Datei dynupdate.js.

    Vielleicht gibt es da noch Fehler in der Konsole zu sehen. F12 drücken.


    Zum Testen würde ich empfehlen, auf das Template Cassiopeia zu schalten.

    Evtl. ist die dynupdate.js im aktuellen Template in alter Form vorhanden und überschreibt die originale VM-Datei.


    Grüße

    Stefan


    PS. Evtl. einmal Joomla Debug einschalten und den Stack Trace der Warenkorbseite posten, wenn der Fehler auftritt.

  • Hallo,


    die dynupdate.js habe ich gefunden, wollte die aber nicht bearbeiten, da ich das ja vermutlich nach jedem Update wieder machen müßte.


    Die F12 für Inspektor, Console usw. war mir auch noch nicht geläufig, hab das immer über „Element inspizieren“ geöffnet. Wenn man mit der 3 aktualisiert und die Fehlerbox kommt, wird zweimal die Meldung „Einige Cookies verwenden das empfohlene "SameSite"-Attribut inkorrekt. Das Cookie "…" verfügt über keinen gültigen Wert für das "SameSite"-Attribut. […]“ ausgegeben. Der Bezug zum Problem erschließt sich mir nicht, denn lt. Beschreibung bei mozilla.org dient das SameSite-Attribut der Abwehr manipulierter URL-Parameter. Auf Cassiopeia umgestellt kommt derselbe Fehler.


    Mit eingeschaltetem Debug wird ausgegeben:

    Argument number specifier must be greater than zero and less than 2147483647

    …/administrator/components/com_virtuemart/helpers/vmtext.php:150

    Call stack

    # Function Location

    1 () JROOT/administrator/components/com_virtuemart/helpers/vmtext.php:150

    2 sprintf() JROOT/administrator/components/com_virtuemart/helpers/vmtext.php:150

    3 vmText::sprintf() JROOT/components/com_virtuemart/helpers/cart.php:2536

    4 VirtueMartCart->checkForQuantities() JROOT/components/com_virtuemart/helpers/cart.php:2344

    5 VirtueMartCart->prepareCartData() JROOT/components/com_virtuemart/controllers/cart.php:86

    6 VirtueMartControllerCart->display() JROOT/libraries/src/MVC/Controller/BaseController.php:678

    7 Joomla\CMS\MVC\Controller\BaseController->execute() JROOT/components/com_virtuemart/virtuemart.php:128

    8 require_once() JROOT/libraries/src/Dispatcher/LegacyComponentDispatcher.php:71

    9 Joomla\CMS\Dispatcher\LegacyComponentDispatcher::Joomla\CMS\Dispatcher\{closure}() JROOT/libraries/src/Dispatcher/LegacyComponentDispatcher.php:73

    10 Joomla\CMS\Dispatcher\LegacyComponentDispatcher->dispatch() JROOT/libraries/src/Component/ComponentHelper.php:361

    11 Joomla\CMS\Component\ComponentHelper::renderComponent() JROOT/libraries/src/Application/SiteApplication.php:208

    12 Joomla\CMS\Application\SiteApplication->dispatch() JROOT/libraries/src/Application/SiteApplication.php:249

    13 Joomla\CMS\Application\SiteApplication->doExecute() JROOT/libraries/src/Application/CMSApplication.php:293

    14 Joomla\CMS\Application\CMSApplication->execute() JROOT/includes/app.php:61

    15 require_once() JROOT/index.php:32


    Da wird wohl in vmtext, Zeile 150 ein unzulässiger Parameter übergeben.


    Besten Gruß

    Steffen

  • Sprachdateien, da war doch was, damit hatte ich ohnehin Schwierigkeiten, suche ich mal raus. Mit den Dateien von VM ist der Fehler immernoch da, er ist aber weg, wenn ich die de-DE.override.ini unwirksam mache (umbenenne).


    Besten Gruß

    Steffen

  • sbk510

    Hat das Label Gelöst: hinzugefügt