
Hallo,
der Aufruf des Warenkorbs www.domain.tld/en/checkout/cart gibt nachfolgenden Fehler. Der Warenkorb im Hauptshop (www.domain.tld/de/checkout/cart) kann fehlerfrei aufgerufen werden. Das ist erst seit dem Update auf Shopware 5.6.7 so. Mit SW 5.6.6 war das Verhalten noch fehlerfrei und beide Sprachshops haben sich gleich verhalten.
Fatal error: Uncaught TypeError: Return value of Shopware_Controllers_Frontend_Checkout::isShippingAllowed() must be of the type bool, null returned in /var/www/clients/client1/web5/web/beta/engine/Shopware/Controllers/Frontend/Checkout.php:2192 Stack trace:
#0 /var/www/clients/client1/web5/web/beta/engine/Shopware/Controllers/Frontend/Checkout.php(180): Shopware_Controllers_Frontend_Checkout->isShippingAllowed()
#1 /var/www/clients/client1/web5/web/beta/engine/Library/Enlight/Controller/Action.php(192): Shopware_Controllers_Frontend_Checkout->cartAction()
#2 /var/www/clients/client1/web5/web/beta/engine/Library/Enlight/Controller/Dispatcher/Default.php(478): Enlight_Controller_Action->dispatch()
#3 /var/www/clients/client1/web5/web/beta/engine/Library/Enlight/Controller/Front.php(228): Enlight_Controller_Dispatcher_Default->dispatch()
#4 /var/www/clients/client1/web5/web/beta/engine/Shopware/Kernel.php(188): Enlight_Controller_Front->dispatch()
#5 /var/www/clients/client1/web5/web/beta/vendor/symfony/http-kernel/HttpCach in /web/engine/Shopware/Controllers/Frontend/Checkout.php on line 2192
So weit ich das nachvollziehen kann, funktionieren alle anderen Seiten - auch im Checkout - in beiden Sprachshops fehlerfrei.
PHP 7.4.6 / NGINX
Kennt jemand den Fehler oder die Lösung des Fehlers oder kann mir zumindest den Weg weisen, um das Problem zu lösen?
2 Answers
-
Moritz Naczenski AdministratorsComments: 9810 Received thanks: 2959 Member since: September 2013
Das hat irgendwas mit den Lieferländern zu tun.
Hast du eine abweichende Konfiguration für den Sprachshop in den Länder-Einstellungen?
QuoteAccepted Answer -
Patrick Stahl ModeratorComments: 539 Received thanks: 240 edited June 2020 Member since: August 2011
Moin zusammen!
Dank der Hilfe von @drakon konnte ich das Problem tatsächlich nachstellen und beheben! :-)
Vielen Dank dafür!
Das betrifft entsprechend definitiv nicht alle Shops, sondern nur welche, die einen gewissen alten "Übersetzungs-Zustand" besitzen.
Eine entsprechende interne Änderungsabfrage ist bereits auf dem Weg.
Für euch als mögliche Hotfixes bis dahin:
1. Die Länder-Übersetzungen einfach einmal öffnen und neu speichern
oder
2. Nach den hier markierten Zeilen den folgenden Code anfügen:if (!array_key_exists('allow_shipping', $countryTranslations[$countryId])) { return $allowedByDefault; }
Die gesamte Methode sähe dann so aus:
private function isShippingAllowed(int $countryId): bool { $queryBuilder = $this->get('dbal_connection')->createQueryBuilder(); $allowedByDefault = (bool) $queryBuilder->select('allow_shipping') ->from('s_core_countries', 'countries') ->where('countries.id = :countryId') ->setParameter(':countryId', $countryId) ->execute() ->fetchColumn(); $countryTranslations = $this->get('modules')->sAdmin()->sGetCountryTranslation(); if (!$countryTranslations) { return $allowedByDefault; } if (!array_key_exists($countryId, $countryTranslations)) { return $allowedByDefault; } if (!array_key_exists('allow_shipping', $countryTranslations[$countryId])) { return $allowedByDefault; } return $countryTranslations[$countryId]['allow_shipping']; }
Ich hoffe, dass euch dies erstmal weiter hilft! :-)
Liebe Grüße,
Patrick Stahl
QuoteAccepted Answer - Accepted Answers
Answers
Das hat irgendwas mit den Lieferländern zu tun.
Hast du eine abweichende Konfiguration für den Sprachshop in den Länder-Einstellungen?
Hallo und danke,
alle Kästchen in der EN-Spracheinstellung der Länder für "Als Lieferland zugelassen" waren deaktiviert. Seit wann ist diese Einstellung denn dazu gekommen? In der letzten SW-Version hatte es ja noch so funktioniert.
Seit ich das Default-Land Deutschland im Sprachshop aktiviert habe, ist der Fehler weg.
Gibt es eine Möglichkeit das Flag auf einmal für alle Länder im Sprachshop zu setzen, oder muss ich mich da manuell durchklicken?
Danke für den Hinweis, ein Kunde hatte das Update schon gemacht und den gleichen Fehler erhalten...
Hoppala, das klingt übel.
Wenn dem so ist kann kein englischsprachiger Besteller aus dem Ausland mehr ordern, bzw. bekommt Fehlermeldungen ?
Ich hab das bei uns geprüft, auf Englisch sind nun alle Länder nicht mehr als Lieferland aktiv.
Moin zusammen!
Patrick Stahl
Ich habe soeben versucht das genannte Verhalten nachzustellen, bin aber kläglich daran gescheitert.
Habt ihr einen gezielten Weg gefunden das nachzustellen?
Was ich getan habe:
- Hauptshop + Demoshop angelegt
- Im Hauptshop diverse Länder zugelassen, manch andere nicht
- Für den Sprachshop keinerlei Einstellungen diesbezüglich getätigt
- Warenkorb im Haupt- sowie Sprachshop aufgerufen
- Kein Problem auf diese Art
Übrigens:
Wenn ihr noch keine Einstellung getätigt habt am Sprachshop, müsste er die Einstellung vom Hauptshop vererbt bekommen. Heißt also nicht, dass nun alle Länder im Sprachshop als "Lieferland zulassen: Nein" gelten.
Falls jemand von euch das gezielter nachstellen kann, gerne melden, noch besser mit @ Markierung, damit ich darauf aufmerksam werde. :-)
Lieben Gruß,
Hallo Patrick,
vielleicht liegt es daran, dass der Shop schon seit 4.x upgedated wird? Ich hab das jetzt ganz pragmatisch gelöst und die im Hauptshop aktivierten und als Lieferland zugelassenen Länder auch manuell im Sprachshop aktiviert. Das funktioniert ja dann fehlerfrei.
Falls es was zur Fehlersuche beiträgt, kann ich wahlweise gerne einen BE-Zugang für Dich einrichten, oder eine Datenbanksicherung vor dem Update zur Verfügung stellen (das sollte ich nur bald wissen, da der Provider die Backups nur 7 Tage aufbewahrt)
Moin @drakon,
Patrick Stahl
eine Datenbanksicherung wäre super! :-)
Die kann ich dann einfach mal untersuchen. Gerne per PN, entweder hier oder in unserem Community Slack.
Liebe Grüße,
Moin zusammen!
Dank der Hilfe von @drakon konnte ich das Problem tatsächlich nachstellen und beheben! :-)
Vielen Dank dafür!
Das betrifft entsprechend definitiv nicht alle Shops, sondern nur welche, die einen gewissen alten "Übersetzungs-Zustand" besitzen.
Eine entsprechende interne Änderungsabfrage ist bereits auf dem Weg.
Für euch als mögliche Hotfixes bis dahin:
1. Die Länder-Übersetzungen einfach einmal öffnen und neu speichern
oder
2. Nach den hier markierten Zeilen den folgenden Code anfügen:
Die gesamte Methode sähe dann so aus:
Ich hoffe, dass euch dies erstmal weiter hilft! :-)
Patrick Stahl
Liebe Grüße,
Grundeinstellungen > Shopeinstellungen > Länder: z.B. Deutschland wählen + Übersetzung von "Name"
Hallo!
Auch von mir ein Danke!
Auch bei uns funktionierten im Sprachshop /checkout/cart bzw. teilweise auch /checkout/confirm nicht. Ursache war ebenfalls der fehlende Haken "Lieferland zulassen" beim entsprechenden Land in den Ländereinstellungen. Allerdings ist die Verhaltensweise etwas merkwürdig. Wir haben einzelne Länder, die im Sprachshop gar nicht aktiv sind, sondern nur im Hauptshop. In dem Fall tritt der Fehler aber nicht auf. Liegt vermutlich daran, dass die Einstellungen aus dem Hauptshop vererbt werden, wie Patrick Stahl bereits geschrieben hat. Aber das Land ist im Sprachshop auswählbar, was nach meinem Verständnis gar nicht gehen sollte, wenn es im Sprachsop nicht aktiv ist?! Erst, wenn es aktiviert und anschließend deaktiviert wird, ist es nicht mehr auswählbar.
Der Fehler ist nur zufällig aufgefallen. Natürlich unschön, da das Update schon ein paar Wochen her ist. Es ist schade, dass es Fehler gibt, bei denen nur eine leere Seite ausgegeben wird, respektive die Browser-Fehlermeldung "Diese Seite funktioniert nicht. xxx kann diese Anfrage momentan nicht verarbeiten. HTTP ERROR 500"
Ich denke, dass die meisten Nutzer damit nichts anfangen können. Es wäre immer schön, wenn der Nutzer irgendwie im Shop landet mit Fehlermeldung.
Hallo, Patrick!
Ich habe die o.g. Code hinzugefügt. Das hat aber leider nicht geholfen. Soll ich folgende Code auch hinzufügen? Wenn ja, wohin?
bei mir funktioniert komischerweise 1 Sprachshop von 4. https://www.kosmetikfriseurmassage.de
Also DE und EN funktioniert
ES, IT, FR funktioniert nicht
Ich habe eine temporere Lösung gefunden: Offcanwas Warenkorb ausschalten
damit kann man wenigstens Bestellung durchführen. Rollover für Warenkorb funktioniert nur für DE und EN
Wir bekommen den Warenkorb in einem Sprachshop einfach nicht zum Laufen
Es sind alle Versandarten da, die Zahlungsarten stimmen auch. Bei den Ländern waren tatsächlich in den Grundeinstellungen wie oben beschrieben im betroffenen Sprachshop alle inaktiv und der Haken bei "als Lieferland zulassen" fehlte auch.
Wir haben jetzt alle aktiviert und zugelassen. Wenn ich unter "Warenkorb bearbeiten" gehe und die Übersichtseite auf den Sprachshop wechsle, dann kann ich auch Lieferland, Versandart und Zahlungsart konfigurieren.
Sobald ich aber auf das Warenkorb-Logo drücke, öffnet sich ein weißer Rand und das wars. So wie ich Firefox lese, kommt da rechts ein 404.
Was übersehen wir denn?