im Zuge meiner Ausbildung als Anwendungsentwickler versuche ich mich aktuell an der Programmierung von Shopware 5 Plugins. Leider komme ich damit aktuell keinen Schritt weiter, da selbst die Example Plugins (z.B. https://developers.shopware.com/developers-guide/controller/ ) auf einem bei Mittwald gehostetem Testserver (5.5.10) nach der Aktivierung einen Error 500 werfen.
Hat da jemand einen Tipp ob es irgendwo noch andere Dokumentationen gibt mit funktionierenden Beispielen?
Ich habs sowohl Lokal als auch auf dem Server getestet. Beidesmal die selbe Problematik. Mit dem gehosteten Server wollte ich nur Ausdrücken, dass ich irgend nen dummen Fehler bei der Installation lokal ausschließen kann.
Hast du es mal mit anderen Plugins probiert? Bei einem 500er Fehler musst du im error-Log von Php oder deinem Webserver nachsehen. Da sollte eine ausführliche Fehlermeldung stehen. Wenn du die hier postest, kann man dir sicher weiterhelfen. Den Log findet man je nach Setup woanders. Hier einfach mal googeln, solltest du den Log nicht gleich finden.
Fatal error : Uncaught ReflectionException: Class SwagProductListing\Subscriber\TemplateRegistration does not exist in /html/shopware/engine/Shopware/Components/DependencyInjection/Compiler/EventSubscriberCompilerPass.php:64 Stack trace: #0 /html/shopware/engine/Shopware/Components/DependencyInjection/Compiler/EventSubscriberCompilerPass.php(64): ReflectionClass->__construct(‚SwagProductList…‘) #1 /html/shopware/vendor/symfony/dependency-injection/Compiler/Compiler.php(141): Shopware\Components\DependencyInjection\Compiler\EventSubscriberCompilerPass->process(Object(Symfony\Component\DependencyInjection\ContainerBuilder)) #2 /html/shopware/vendor/symfony/dependency-injection/ContainerBuilder.php(790): Symfony\Component\DependencyInjection\Compiler\Compiler->compile(Object(Symfony\Component\DependencyInjection\ContainerBuilder)) #3 /html/shopware/engine/Shopware/Kernel.php(555): Symfony\Component\DependencyInjection\ContainerBuilder->compile() #4 /html/shopware/engine/Shopware/Kernel.php(300): Shopware\Kernel->initializeC in /html/shopware/engine/Shopware/Components/DependencyInjection/Compiler/EventSubscriberCompilerPass.php on line 64
Das ist die Meldung die ausgegeben wird.
Mein Vorgehen => Frische Installation, Plugin hochladen, installieren, aktivieren => Fehlermeldung. Hab an dem ganzen Plugin keinen Handstreich gemacht bisher.
woher hast du denn das besagte Plugin, welches den genannten Fehler wirft?
Ich nehme an, dass es sich hierbei um dieses Plugin handelt, aber in welchem Beispiel-Artikel o.Ä. hast du es gefunden?
Ich schaue mir gleich mal an, ob das Plugin überhaupt noch mit der aktuellen Shopware Version kompatibel ist. Dies könnte ggf. bereits eine Ursache für den Fehler sein.
oh, da hat sich tatsächlich ein Fehler eingeschlichen.
Kurz zur Erklärung:
Das Plugin, das du installiert hast, heißt SwagController und läuft entsprechend auch unter dem Namespace SwagController.
In Shopware laden wir Klassen per PSR-4 Autoloading, was eigentlich für dich erstmal nur heißt: Der Namespace jeder Klasse muss in Etwa dem Pfad zu der PHP Datei entsprechen, so wie die Klasse dem Dateinamen entsprechen muss.
Als Beispiel:
Die Datei im Pfad _meinPlugin/Controllers/Frontend/ExampleControllers/ Foo.php _hat den Klassennamen Foo und den Namespace MeinPlugin\Controllers\Frontend\ExampleControllers.
Warum ich dir das erkläre?
Wenn du nun einmal in das tatsächliche Plugin schaust, findest du eine Datei in folgendem Pfad: SwagController/Subscriber/ TemplateRegistration.php
Der Namespace müsste also SwagController\Subscriber lauten, gemäß dem Pfad. Und die Klasse eben TemplateRegistration.
Wenn du die Datei nun aber öffnest, wirst du feststellen: Der Namespace oben passt nicht! Dieser lautet SwagProductListing, obwohl dort SwagController stehen müsste.
Das müsstest du also mal eben korrigieren. Wichtig ist, dass du das auch in der Datei SwagController/Resources/services.xml korrigierst, hier wird die selbe Klasse mitsamt falschem Namespace auch nochmal referenziert.
Danach läuft das Plugin.
Hilft dir das weiter?
Liebe Grüße,
Patrick Stahl
P.S.: Das Plugin in der Doku korrigiere ich natürlich eben.
P.P.S: Hier kannst du meine Änderungen dazu sehen. Sind genau die, die du auch machen müsstest.
P.P.P.S: Änderung ist auch schon gemerged!