Eigenen Controller für eigene Landingpage erstellen

Hallo,

ich bin neu in der Shopware-Programmierung und auch recht frisch in PHP, versuche mich aber dennoch an einem Plugin. Doch leider scheitere ich direkt ganz am Anfang, beim registrieren eines eigenen Controllers. Ich würde gerne, dass wenn man shop.tld/test/ oder von mir aus auch shop.tld/frontend/test aufruft ein entsprechender Controller geladen wird, der ein eigenes Template anzeigt. Dieser Fall ist glücklicherweise direkt in den Tutorials von Shopware abgebildet, leider funktioniert es bei mir nicht. Weder in der < 5.2 Konfiguration, noch in der neueren.

Beispiel:

Das Plugin „TestPlugin“ (/custom/plugins/TestPlugin/TestPlugin.php):

 'registerController',
        ];
    }

    public function registerController(\Enlight_Event_EventArgs $args)
    {
        return $this->getPath() . "/Controllers/Frontend/Test.php";
    }
}

Der Controller (/custom/plugins/TestPlugin/Controllers/Frontend/Test.php):

Bis auf die plugin.xml und plugin.png besteht das Plugin nur aus den oberen beiden Dateien.

Rufe ich nun shop.tld/test/ auf wird die Startseite des Shops geladen, statt „Hello World“ angezeigt. Ich habe das ganze In Shopware 5.2 (aktiver Shop) sowie in 5.3.1 (saubere Installation der Community Edition) getestet, und es klappt nicht. Auch nicht mit der Auto-Registrierung. So wie es aussieht wird das Event Enlight_Controller_Dispatcher_ControllerPath_Frontend_Test nie gefeuert, da die Methode registerController nicht ausgeführt wird (sehe ich wenn ich z.B. ein error_log mache)

Hilfe wäre echt super!

Hallo,

eigentlich reicht es im neuen Plugin-System aus, wenn du deinen Controller unter /Controllers/Frontend/ ablegst. Mehr brauchst du garnicht machen, die werden automatisch registriert. Der Aufruf wäre aber auch “/Test” und nicht “/test/”. Vielleicht liegt es daran?

Hier mal ein Beispiel, wie ich das getestet habe: https://github.com/mnaczenski/ControllerTest

/Testcontroller funktioniert da im Frontend einwandfrei.

 

Moritz

 

Hallo Moritz,

danke für die Antwort. Großschreibung hat leider nichts geändert. Ich habe mal deinen Test runtergeladen, aber da habe ich das gleiche Verhalten. Rufe ich /frontend/Testcontroller/index auf, lande ich auf der Startseite (getestet in einer frischen, unangerührten Community-Edition 5.3.1).

Bei meinem Testplugin hatte ich es auch bereits mit der automatischen Registrierung probiert, leider ohne Erfolg. Ich muss irgendwas total blödes übersehen.

Edit: Moment, dein Plugin funktioniert jetzt, nachdem ich den Cache über die clear_cache.sh geleert habe. Ich teste mal eben bei meinem weiter …

Also bei mir läuft das einwandfrei in der 5.3.1 - hab das Beispiel natürlich vorher getestet.

Einfach installieren, Cache leeren und dann läuft das. Aber der aufruf ist ja auch www.meinshop.de/Testcontroller

Das Frontend kommt nicht in die URL.

Hallo,

hatte meinen Beitrag zwischenzeitlich editiert. Klappt übrigens durchaus mit /frontend/testcontroller, glaube das ist für Shopware die eigentliche URL?!

Mittlerweile läuft mein Plugin. Es scheint am Namen des Controllers zu liegen. Ich hatte “Support” genutzt, und obwohl unter der URL nichts läuft, funktioniert es damit nicht. Mit “Supportx” z.B. hingegen klappt es. Vielleicht ist der Name reserviert, für das CRM oder so? Sowas ist wieder typisch für mich.

Danke für deine Hilfe!

Hallo, ich habe das Plugin ebenfalls ausgetestet. Es läuft tatsächlich nur mit example.de/ frontend/ Test .

Soll das so sein?

Danke und Gruss

Also es funktioniert auch via example.de/Test ,also geht beides.