Controller - ein einfaches Rechenbeispiel

Moin @hoppler‍,

du hast da ein paar Sachen durcheinander geworfen. :slight_smile:

  1. Dein Controller sollte hier liegen: \Mein_Plugin\Controllers\MeinController.php  oder  \Mein_Plugin\Controllers<u>Frontend
    Warum das? Ist einfach eine Konvention - musst du jetzt aber nicht zwingend beachten und ist für die Funktionalität deiner Anwendung erstmal nicht wichtig.

  2. Deine Template Dateien sollten alle  hier liegen: \Mein_Plugin\Views\frontend\mein_controller\
    Warum?
    Shopware Frontend Controller besitzen eine Art Template Autoloading - das heißt, dass eine Controller-Action eines Frontend Controllers immer auch von allein nach einem Template sucht.
    Die Suche nach dem passenden Template findet unter folgenden Gesichtspunkten statt:

  • Es werden alle Template-Verzeichnisse in Anbetracht gezogen (Deswegen fügst du in der init-Methode auch per „addTemplateDir“ deinen eigenen Views Ordner hinzu)
  • Er sucht innerhalb der Template-Verzeichnisse nach dem richtigen Module, in diesem Fall nach einem Ordner namens  frontend/ , weil du einen Frontend-Controller hast. Wäre es ein Backend Controller, würde er stattdessen nach einem Ordner „backend/“ suchen.
  • Anschließend erwartet er einen Ordner, der so benannt ist wie dein Controller, bloß in im sogenannten SnakeCase. Das bedeutet, dass aus deinem Controller Namen „MeinController“ anschließend „mein_controller“ wird. Er sucht also nach einem Ordner  mein_controller/.
  • Zu guter Letzt sucht er nach einer Template Datei, die nach deiner Action benannt ist. In deinem Fall eine addAction. Er lässt das „Action“ weg und sucht somit nach einer  add.tpl

Zusammenfassend: Die Templates für deine indexAction / addAction müssen hier liegen: \MeinPlugin\Views\frontend\mein_controller\ und dort dann jeweils  index.tpl  und  add.tpl.

Soweit erstmal klar? :slight_smile:

Da du dich nun auf das Template Autoloading stützt, kannst du deine indexAction auch löschen.
Warum das jetzt? Alles, was deine IndexAction bislang macht, ist ein Template manuell  zu laden. Brauchst du jetzt ja nicht mehr, wenn du das Autoloading für die Templates nutzt.  Thumb-Up
Ist das verständlich?

Dann dürfte deine addAction auch vernünftig funktionieren und ein vernünftiges Template anzeigen.
 

Immer wieder werde ich auf: /Mein_Shop/Meincontroller/add weitergeleitet wo eine leere Seite ist.

Bis auf die leere Seite, die mit o.g. Weg auch nicht mehr weiß sein dürfte, ist die Weiterleitung als Solches ja auch erstmal korrekt. :slight_smile:

Ich hoffe damit kommst du erstmal weiter.

Gruß,
Patrck  Shopware