MichaelMatzMichaelMatz MemberComments: 4 Received thanks: 0 Member since: May 19 edited May 19

Hallo, 

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?

Vielen Dank

Michael 

1 Answer

  • Patrick StahlPatrick Stahl ModeratorComments: 536 Received thanks: 235 edited May 19 Member since: August 2011

    Hey @MichaelMatz‍,

    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,
    Shopware 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! :-P

    Quote
    Accepted Answer
    Thanked by 1MichaelMatz
  • Accepted Answer

Answers

  • simklisimkli MemberComments: 1352 Received thanks: 495 Member since: February 2014

    Als erstes solltest du dir mal eine lokale Entwicklungsumgebung installieren. Siehe hier: https://developers.shopware.com/sysadmins-guide/installation-guide/ und hier: https://github.com/shopware/shopware/blob/5.5/README.md#installation-via-git

    Entwicklung direkt auf einem Server wo man am Ende nur FTP hat, kann ich nicht empfehlen.

     

  • MichaelMatzMichaelMatz MemberComments: 4 Received thanks: 0 edited May 19 Member since: May 19

    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. 

  • simklisimkli MemberComments: 1352 Received thanks: 495 Member since: February 2014

    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.

    Thanked by 1MichaelMatz
  • MichaelMatzMichaelMatz MemberComments: 4 Received thanks: 0 Member since: May 19

    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. 

     

    Kannst du damit was anfangen?

  • Patrick StahlPatrick Stahl ModeratorComments: 536 Received thanks: 235 Member since: August 2011

    Moin @MichaelMatz‍,

    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.

    Liebe Grüße
    Shopware Patrick Stahl

  • MichaelMatzMichaelMatz MemberComments: 4 Received thanks: 0 Member since: May 19
  • Patrick StahlPatrick Stahl ModeratorComments: 536 Received thanks: 235 edited May 19 Member since: August 2011

    Hey @MichaelMatz‍,

    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,
    Shopware 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! :-P

    Quote
    Accepted Answer
    Thanked by 1MichaelMatz
  • MichaelMatzMichaelMatz MemberComments: 4 Received thanks: 0 Member since: May 19

    Vielen Dank für die Hilfe!

    Jetzt funktioniert es. :-)

     

Sign In or Register to comment.