Warning: session_start(): The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /var/www/customers/ust/www.ust-gmbh.com/cms/framework/ustlib/clsSession.inc.php on line 76
Shopware Backend-Dokumentation | Dokumentation Shopware Online-Shop-Software

Shopware Backend-Dokumentation

Backendentwicklung von Shopware und ihre Stolpersteine

Unter der Haube von Shopware-Backend läuft Ext JS, was zugleich sowohl ein Segen als auch ein Fluch sein kann. Es ist ein Segen, weil man mit Ext JS sehr schnell und, vor allem gut strukturiert „CRUD-fähige“ Verwaltungsmasken erstellen kann. Gleichzeitig ist aber die Entwicklung, besonders für unerfahrene Ext JS Entwickler, sehr fehleranfällig und die Fehlermeldungen, wenn man sie überhaupt zu sehen kriegt, tragen oft nicht sonderlich viel zum Verständnis bei.

Wo liegen die Schwierigkeiten?

Es liegt in der Natur von Ext JS, dass bevor man eine neuprogrammierte Maske im Browser aufrufen kann man zumindest irgendeine Art von Model, View, Controller, Store und die app.js-Datei, die alles zusammenführt braucht. Zusätzlich müssen die Elemente untereinander richtig referenziert werden. Dadurch ist es sehr wahrscheinlich, dass sich ein oder mehrere Fehler einschleichen und die Suche nach der Ursache beginnt.

Zusätzlich verwendet das Backend die Smarty Engine. Ext JS Code muss also die Syntax von Smarty berücksichtigen und mit entsprechenden Blöcken und Anweisungen versehen und richtig eingebunden werden. Das stellt eine zusätzliche Fehlerquelle dar.

Das Ziel ist über den Fehler möglichst viel in Erfahrung zu bringen und das Verhalten so transparent wie möglich zu machen.

Wie äußert sich der Fehler

Im besten Fall erscheint der Fehler im „Shopware Fehler Reporter“ oder in einem einfachen Popup und die Beschreibung ist aussagekräftig genug, sodass Rückschlüsse auf die Ursache gemacht werden können. Oft ist das Fehlerbeschreibungsfeld einfach leer oder enthält nur eine generische Meldung. Es kann aber auch passieren, dass der Fehler die Erzeugung des Fehler-Reporters blockiert und die Oberfläche friert, komplett ohne Feedback ein. Folgendes können Sie tun um eine vernünftige Fehlermeldung zu erhalten.

Response prüfen

Um festzustellen ob der Fehler bereits serverseitig auftritt lohnt sich ein Blick auf die Daten, die vom Server an den Browser geschickt werden. Chrome bietet hervorragende Entwicklertools (DevTools) und wird von Shopware für das Arbeiten im Backend empfohlen. Um Requests zu analysieren öffnet man die DevTools durch die Tastenkombination „Ctrl“+“Shift“+“i“ und wechselt zum Reiter „Network“. Dann sollte die Seite neugeladen werden. Erscheint eines der vielen Requests rot klicken wir diesen an und schauen den Inhalt des Responses an. Meistens beinhaltet es eine klare Fehlermeldung mit einem detaillierten Stacktrace.

Damit das allerdings auch sicher funktioniert, sollte ihre „config.php“ diese Konfiguration beinhalten:

'phpsettings' => [
   'display_errors' => 1,
]

Ausgabe in der Konsole

Tritt der Fehler clientseitig, bei der Ausführung von JavaScript auf sehen Sie eine entsprechende Meldung in der JavaScript-Konsole der DevTools (Reiter „Console“). Gewöhnliche JavaScript-Fehler können dadurch schnell erledigt werden. Schwieriger wird es wenn der Fehler aus dem Ext JS Framework kommt. Aus Performancegründen ist bei Shopware, per Default, die Datei „ext-all.js“ als Quellcode für Ext JS eingebunden. Diese, auf Performance optimierte Version, kann weder verständliche Fehlermeldungen erzeugen, noch ist sie zum Debuggen geeignet. Während der Entwicklung ist es daher sinnvoller anstelle der „ext-all.js“, die „ext-all-debug.js“ einzubinden. Dies macht das Debuggen zwar immer noch nicht einfach, aber wesentlich einfacher. Eine ausführliche Beschreibung wie die Datei eingebunden wird findet man hier.

Die Shopware-Backend-Dokumentation ist in folgende Teile gegliedert: