GELÖST: Plugin Controller nicht erreichbar (=404)?

Hi, ich hänge hier mal wieder bei ner neuen Plugin Programmierung. Ich habe schoneinmal ein Plugin gebaut welches einen eigenen Controller zur Verfügung stellt und in Ihm meine neuen Actions definiert. Dies funktioniert auch wunderbar. Ich kann mich allerdings errinern das ich eine ganze Weile gebraucht habe bis der Controller im Frontend erreichbar war. Leider weiss ich aber auch nichtmehr genau was ich dort gemacht hatte damit es funktioniert. Nun stehe ich wieder voir dem gleichen Problem und komme einfach nicht weiter (bei jedem Aufruf bekomme ich in der Console einen 404 zurück). Ich versuche mal den Code darzustellen und hoffe ich vergesse dabei nichts: Bootstrap.php: public function install() { ... $event = $this-\>createEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_Showcase', 'onGetControllerPath' ); $this-\>subscribeEvent($event); ... return true; } ... public static function onGetControllerPath(Enlight\_Event\_EventArgs $args) { return dirname(\_\_FILE\_\_).'/Showcase.php'; } Selbstverständlich liegen die Dateien alle im Verzeichniss des Plugins. Installieren lässt es sich alles soweit super. Eine Funktion habe ich mal an den PostDispatch Event gehängt und diese wird dann auch einwandfrei ausgeführt. Showcase.php: [code]<?php class Shopware_Controllers_Frontend_Showcase extends Enlight_Controller_Action
{
protected $system;
protected $config;

// initial funktion
public function init()
{
$this->system = Shopware()->System(); $this->config = Shopware()->Config(); $this->View()->addTemplateDir(dirname(__FILE__)); } // showcase ansicht public function showcaseAction() { $config = Shopware()->Plugins()->Frontend()->Showcase()->Config(); $maxThumbs = $config->maxThumbs; echo($maxThumbs); $this->View()->loadTemplate(„showcase.tpl“); } } [/code] Es ist ja nun eigentlich egal was ich in dieser Datei machen möchte. Zum einen ist sichergestellt das sich das Plugin installieren lässt und es wird auch ausgeführt. Aber egal was ich nun in dem Controller machen möchte dürfte ich bei folgendem Aufruf keinen 404 bekommen oder? „/shopware.php/sViewport,Showcase/sAction,showcase“. Eigentlich sollte der Shop auch untert engine/…/Proxies eiune neue Datei anlegen die den Controller repräsentiert. Dies passiert aber auch nicht. Installiere ich dagegen mein altes Plugin mit Controller funktioniert alles sofort auch die gewünschte Proxie Datei ist dann angelegt. Ich hoffe ihr könnt mir an der Stelle weiterhelfen, verstehen tue ich das garnicht, gerade da ichähnliches ja bereits umgesetzt habe. mfg Lars

Leigt der Controller wirklich im Plugin Verzeichnis? Etwa so: /engine/Shopware/Plugins/Local/Frontend/Showcase/Bootstrap.php /engine/Shopware/Plugins/Local/Frontend/Showcase/Showcase.php Was passiert bei folgendem Aufruf: http://your-domain.com/Showacase ? Da dürfte eine Exception erscheinen, das die indexAction nicht definiert ist. Zu Proxies: wenn ich mich nicht irre, werden die Proxies nur für Hooks erstellt. Ein Event wird in die Datenbank geschrieben.

Welche SW Version?

Hi, danke für die schnellen Antworten. @waldicom Ja er liegt sicher dort (gerade nochmal geschaut :slight_smile: ). Ein Aufruf, wie beschrieben, sollte ohne übergebener Action die default Action laden ist diese nicht definiert gibts ne exception das ist soweit klar. Nur solange ich beim versuch den Controller aufzurufen einen 404 zurück bekomme bekomme ich auch bei diesem Aufruf logischer weise keine exception (auch nochmal getestet endet genau wie alles mit 404). Das ganze Prinzip mit den Proxies habe ich bis heute nicht richtig verstanden. Das was mir eben aufgefallen ist ist das Plugins welche ich als Vorbild hergenommen habe wie zB das recommendation Plugin oder eben wie auch mein anderes Controller Plugin (was auf dem gleichen Weg wie erwähnt super funktioniert) immer in diesem Proxies Ordner auch eine zugehörige Datei haben. Diese Datei fehlt hier und ich glaube das genau das das Problem ist, bzw irgend ein Fehler der den Shop dazu bringt diese nicht anzulegen. @ottscho Es handelt sich um eine Shopware 3.5.6 also die neuste Version frisch installiert. Vielen Dank für jede Hilfe Lars

Hi, ich konnte mir nun nach langem rumprobieren selbst helfen: Das Problem war tatsächlich auch nicht aus meinem ersten Post erkennbar. Ich habe bei der Bennenung des Controllers nicht „Showcase“ verwendet sondern „lShowcase“ (ich mache sowas gerne für die interne Organisation hatte es im Bsp weggelassen um Verwirrung zu vermeiden). Nun habe ich festgestellt das ein Controller anscheinend mit einem Großbuchstaben beginnen muss (LShowcase funktioniert). Meine Vermutung an der Stelle ist eben genau das diese Proxy Dateien die dort erzeugt werden immer die trennung mit einem Großbuchstaben signalisieren also in meinem Fall habe ich dort nun eine Datei namens „ShopwareControllersFrontendLShowcaseProxy.php“ zu liegen. Ich würde mich freuen wenn mir einer dieses Verhalten entsprechend erläutern könnte. Ausserdem sollte man natürlich dann auch entsprechend darauf hinweisen das das so wichtig ist an dieser Stelle (vielleicht habe ich es auch überlesen). Ich danke trotzdem für eure Hilfe Viele Grüße