Willst du etwas verstehen, beschreibe es! Das ist ein Grundpfeiler dieses Blogs, neben dem Hauptgrund der Wissensvermittlung und Fame 😛 Spass beiseite – in diesem Beitrag geht es um die neue Ordnerstruktur von Shopware 6 (?)
Symfony
Shopware setzt wie schon oft angekündigt, eeeeendlich auf einen Fullstack von Symfony. Das heißt Ade Zend und hoffentlich auch Enlight.
Die meisten von euch haben sicher schon einmal mit Symfony gearbeitet und ich gehe hier von Grundkenntnissen aus. Falls nicht – probieren! Das beliebteste und innovativste PHP Framework (in meinen Augen).
By the way – wenn Ihr an einer englischen Version interessiert seid -> Shopware Doku
Zwecks SEO, Verständnis und Zusammenfassung verfasse ich das ganze nochmal gekürzt. Wichtig dabei zu verstehen ist, dass Shopware nun in zwei große Teilbereiche geteilt wird Development und Platform.
Development
Plugin Entwicklung
Hier ändert sich nicht viel für euch custom/plugins/
Snippets
Im scr/ Ordner könnt Ihr Code unterbringen den Ihr außerhalb des Plugin-Scopes braucht. Was genau das sein könnte werden wir noch herausfinden.
Assets
Wie in Symfony üblich liegen eure JS/CSS/MEDIA Dateien im public/ Ordner und sind frei im Web erreichbar.
Deployment
Endlich gibt es einen offiziellen Ordner für Deployments, Entwicklung und CI. Daumen nach oben. Dort befinden sich alle Scripte die Ihr mit ./psh.phar aufgelistet bekommt.
Platform
Hier wird es interessant. In der Platform findet sich der Core (inklusive API), die Dokumentation, die Storefront (PHP) und die Adminstration (ehemals Backend – jetzt in Vue.JS)
Die einzelnen Komponenten Administration und Storefront haben getrennte Einstiegspunkte (Adminstration.php etc.) aber nutzen den Core als Ressource. Interessant ist der Ansatz die Dokumentation mitzuliefern, bin gespannt ob das auch im Major Release einen Platz hat – wäre cool wenn man das als Admin zur Verfügung hat.
Core
Der Core Ordner hat checkout, content und system als Hauptsektionen aufgeteilt. Dort findet Ihr die jeweiligen Module wie z.B. den Warenkorb, Kunden etc.
Ein weiterer wichtiger Ordner ist hier Framework – ich würde Ihn vermutlich mit dem alten engine/Shopware Ordner in Shopware 5.5 vergleichen.
Administration
Die Administration ist ja bekanntlich in Vue.js geschrieben – nur der Wrapper dafür in PHP, dieser lädt eine einfache Twig Datei welche die Basis bildet. Den Code zum ExtJS findet… ähhh Vue.js findet Ihr unter platform/src/Administration/Resources/administration
Storefront
Framework
Seo Kram, Routing und den Maincontroller für das Frontend findet Ihr hier.
Page & Pagelet
Die Storefront rendert vollständige HTML-Seiten. Die Seiten und ihre Bestandteile findet Ihr hier.
PageController & PageletController
Controller die am rendern und Requests verarbeiten (index/login etc. pp.) Ehemals in /engine/Shopware/Controllers/Frontend/ zu finden.
Ressourcen
Vergleichbar mit dem themes/ Ordner in Shopware 5 werden hier statt tpl (Smarty) hier nun twig Template Dateien untergebracht. Außerdem dazu noch .scss/Sass Dateien die für das Styling verantwortlich sind. Finde ich auch gut, denn ich konnte mich nie zu 100% mit Less anfreunden.
Fazit
Wow – das ist eine Menge! Abstraktion in allen Ehren, dass muss man erstmal sacken lassen. Ich denke es dauert eine Weile bis man sich an die Struktur gewöhnt hat. Ich werde vermutlich bald mal eine komplette debugging Session starten und einige Requests mal vom Kernel mit Step Over anschauen.. Was interessiert euch mehr, die Administration, der Core, die API im Core? Gerne als Kommentar in den Beitrag schreiben, ich gehe gerne auf Wünsche ein.
Like A Sir… viele Beiträge in dem Blog auch!