Eigenen Plugin Controller registrieren (404 Fehler)

Hallo liebe  Shopware Community,

ich habe ein Plugin mit einem eigenen Controller geschrieben, der bei mir in mehreren Live Umgebungen sowie Test-Installationen (SW 5.4, 5.5, 5.5.10) problemlos aufgerufen werden kann. Bei der Prüfung des Plugins durch das Shopware-Team kann der Controller jedoch nicht aufgerufen werden. Deshalb wollte ich einmal fragen ob ich hier irgendwo einen entscheidenen Fehler gemacht habe.

 Pfad: /MeinPlugin/Controllers/Frontend/MeinController.php

 Klasse: class Shopware\_Controllers\_Frontend\_MeinController extends Enlight\_Controller\_Action

 Methode: public function meineMethodeAction()

Im Template habe ich bisher den Link 

 /frontend/MeinController/meinemethode

zum Aufrufen des Controllers verwendet. In allen SW Versionen hat dieser Link auch funktioniert. Wenn ich nun stattdessen

 {url module=frontend controller=MeinController action=meineMethode}

im Template verwende, wird mir der Controller jedoch als 

 /MeinController/meineMethode

angezeigt.

Nun zur eigentlichen Frage  Wearing-Sunglasses

Muss ich (im neuen Plugin System) den Controller irgendwo explizit registrieren, oder lag es tatsächlich einfach nur daran dass der Link auf den Controller nicht über die {url} erstellt wurde? Das Plugin wurde ursprünglich für das alte Plugin System geschrieben und im Shopware Buch (Seite 141ff) musste für den Controller ja ein Event registriert werden.

 

Ich wäre über jede Hilfe sehr dankbar!  Crying

Im Template einen Controller aufrufen? Sieht nach Widgets aus.

Unabhängig davon wird bei { url module=frontend controller=MeinController action=meineMethode} auch nur die URL ausgegeben. Ansonsten würde es { action module=frontend controller=MeinController action=meineMethode} sein. Aber im Moment sehe ich bei dir nicht durch.

1 Like

Hallo @R4M, vielen Dank für deine Rückmeldung!

Ich habe einen Controller, der eine PDF Datei für den Download erzeugt. Der Controller wird auf der Artikel Detailseite verlinkt. Bisher habe ich den Link auf den Controller einfach fest auf /frontend/meinController/meineMethode/ gesetzt. In meiner lokalen Entwicklungsumgebung startet nach einen Klick auf diesen Link auch wie gewünscht der Download der PDF Datei.

Ich habe das Plugin daraufhin im Shopware Store hochgeladen, bekomme jedoch in der manuellen Prüfung die Rückmeldung, dass der Link einen 404 Fehler verursacht. Deshalb meine Frage ob ich (1) den Controller explizit registrieren muss und (2) wie ich im Template korrekt auf den Controller verlinke.

Ich denke eher, dass dein Link sowas wie Virtuelle URLs und den Basepath nicht supportet. Die Testmaschinen sind meißt so aufgebaut www.meinedomain.de/sw5-test/

Vielleicht ist das schon das Problem. /frontend brauchst du eigentlich auch garnicht in der URL.

1 Like