Liebes Forum für ein Plugin benötige ich den Namen des Controller, der für die aufgerufene Seite zuständig ist. Der Controllername wird dem Template als Variable “Controller” übergeben (habe ich in mit der Shopware Developer Toolbar gefunden) und habe versucht sie über $Controllername = $view->getAssign(‘Controller’); zu übernehmen. Das liefert aber nur einen leeren Wert. Weiß jemand woran das liegen könnte bzw. wie man an den Controllernamen kommt? Liebe Grüße Kerstin
Du kommst über den request und die Methode getControllerName() an den controller. Beispiel: public function deinDispatchEvent( \Enlight\_Event\_EventArgs $arguments ) { // get the controller /\* @var $controller \Enlight\_Controller\_Action \*/ $controller = $arguments-\>get( "subject" ); // get request $request = $controller-\>Request(); // get controller name $name = $request-\>getControllerName(); }
Viele Grüße
Vielen Dank, habe ich getestet. Allerdings nimmt Shopware die Zeile 8 $request = $controller->Request(); nicht an (das Plugin lässt sich nicht installieren, wenn es diese Zeile enthält). Ist da vielleicht ein Fehler drin? Liebe Grüße Kerstin
Hast du das auch mit drinne? /\* @var $controller \Enlight\_Controller\_Action \*/ $controller = $arguments-\>get( "subject" );
ansonsten halt den Code zeigen…
Hi, versuche es mal mit: $request = $arguments->get( „request“ ); das solle in Front* und Action*-Events funktionieren. Heiner
Ich habe den Code noch einmal kopiert und eingefügt, und jetzt gehts (Habe vorher eigentlich nichts anderes gemacht.) Vielen, vielen Dank. Kleine Nachfrage: Warum hat das nicht mit meinem Code $Controllername = $view->getAssign(‚Controller‘); funktioniert? Ich dachte darüber bekommt man alle Templatevariablen. Liebe Grüße Kerstin