Shopware 5 - getControllerName

Hallo Miteinander,

was ich benötige, mag sich abstrakt anhören, aber ich habe einen sehr isolierten Bedarf den ich nach tagelangem Lesen nicht beantwortet bekomme. Ich muss gestehen, dass ich in Shopware neu bin, dachte aber, dass ich ohne fremde Hilfe das Benötigte schon finden würde. War leider nicht so, deswegen wäre ich schon vorab sehr dankbar, wenn mir jemand weiterhelfen könnte.

Ich benötige in der /shopware.php eine Möglichkeit, um genau dort und nirgendwo anders den jeweils verwendeten Controller Namen abfragen zu können, ohne jetzt großartig ein Plugin oder sonstige Funktionen/Methoden erst extra dafür definieren zu müssen. Für älteren Shopware Versionen als 5 bin ich zwar fündig geworden, aber eben nicht für die aktuelle. Deswegen meine Frage, ob sich dies vergleichsweise einfach bewerkstelligen lässt?

Im Template einfach über:

{controllerName}
{controllerAction}

In der shopware.php wird gar nichts verändert, wenn dann nur über Plugin.

Ich wusste, dass es missverstanden wird… Okay, ich hab vergessen zu erwähnen, dass ich es nicht fürs Template brauche. Dort hatte ich es schon gefunden, hilt mir dort aber nichts.

Wie schon angedeutet, in der „shopware.php“ werden keine Änderungen oder sonstige Anpassungen vorgenommen, dafür benutzt man Plugins. Die „shopware.php“ wird beim Update überschrieben und weg sind deine Anpassungen. Mache es lieber sauber über ein Plugin, dafür sind sie da :slight_smile:

Ich bin grundsätzlich voll auf Deiner Seite, wirklich. Aber ich hab ja schon mit meinem Eingangstext geschrieben, dass ich das Benötigte explizit in der /shopware.php brauche. Ein Plugin hilft mir dabei nicht. Ich brauche eine oberste Instanz, zumal ich das Benötigte eigentlich gar nicht für den Shop brauche, sondern für eine Out-Of-The-Box Lösung und diese braucht genau dort die Controller Namen. Überschreiben ist natürlich ein Problem. aber nachdem ich nur 1 File includiere, kann ich damit leben.

Ich denke hierzu wird es keine Lösung geben, da die shopware.php dafür nicht gedacht ist. Das es explizit in dieser Datei sein muss kann ich noch nicht ganz nachvollziehen. Eine Alternative über ein einfaches Plugin hat am Ende mit Sicherheit die selbe Wirkung.

Wenn du dir z.B. das Event „Enlight_Controller_Action_PostDispatch_Frontend“ bzw. „Enlight_Controller_Action_PreDispatch_Frontend“ anschaust, dann wirst du feststellen, dass man hierüber auf allen Shopseiten zugreifen kann. Und hier könnte man dann den Namen des Controllers inkl. Action auslesen und weitere Funktion oder Aktionen ausführen. Ich denke du wirst um ein Plugin nicht herum kommen.

Moin @serpent_driver‍,

das ist auch garnicht so trivial, wenn man es richtig und stabil machen will.
Theoretisch könntest du die URL einfach parsen und dir deine Informationen selbst da raus holen, bspw. indem du die URL anhand eines „/“ aufteilst.
Dann müsstest du noch SEO URLs beachten, also dir da die Informationen selbst aus der s_core_rewrite_urls holen und auch das selbstständig auslesen und auswerten.
Das würde dann aber auch nur für deinen Shop funktionieren, da du damit unter Anderem virtuelle URLs usw. missachtest.

Die eigentliche Frage ist ja:
Was genau willst du erreichen?
Direkt die shopware.php anzupassen beschreibt ja nur  wie  du ein Problem lösen willst - das Problem selbst ist jedoch nicht bekannt.
Vielleicht gibt es ja doch einen Weg das Ganze sauber zu lösen, du kennst ihn nur nicht.

Liebe Grüße
Patrick Stahl  Shopware

Okay, zur Klärung warum ich das dort benötige. Die besagte zu inkludierende Datei macht nix anders als bestimmte Header zu setzen und das abhängig vom Controller. Die Position dieser Header ist aber entscheidend und muss zwingend und als letzter Header vor dem HTML Output gesetzt werden. Irgendwo dazwischen hilft mir nix. Es mag sein, dass dafür eine schönere Lösung gibt, aber das setzt voraus, dass ich mich tiefer mit Shopware beschäftigen muss und die Zeit fehlt mir wieder anderswo.

Wollt Ihr jetzt unbedingt wissen welche Header das sind? Bitte nicht fragen! :wink:

Moin @serpent_driver‍,

es geht ja nicht darum, dich hier zu irgendwelchen Aussagen zu zwingen. Aber wie du schon selbst schreibst:
Das ist nur deine erstbeste Idee, nicht aber die beste Idee insgesamt.
Wie du es anstellen kannst, habe ich dir ja bereits geschrieben.

Falls du doch den anderen Weg gehen möchtest:
Deine Anfrage klingt nach “Response Headern”, dann kommst du aber plötzlich mit “HTML Output”.
Reden wir von "

" Tags oder von wirklichen HTTP Response Headern?

Lieben Gruß
Shopware Patrick Stahl

Sorry, Du hast natürlich recht. Es geht konkret um Response Header. Nachdem ich weiter oben schon ausgeschlossen hatte, dass ich es nicht fürs Template brauche, schien es mir selbstredend zu sein, dass ich damit Response Header meine und keinen HTML Header.

Was Du wegen SEO URLs mentest, ist deswegen für meinen Bedarf  unerheblich. Ich brauche (fast) nur den jeweils aktuellen Controller Namen.

Okay, alles klar.

In wie fern sind SEO Urls unerheblich für dich?
Wenn du dich auf der Artikel-Detailseite befindest, kannst du den Controller nicht einfach aus der URL lesen. Genauso wie bei Kategorien, Shopseiten, …

In deinem Beispiel könntest du dir dann ein Plugin schreiben und mit dem Terminate Event aus dem Kernel arbeiten.
Das ist so ziemlich die letzte Stelle, die du mit einem Plugin erwischen kannst - da müssten auch schon alle ihre Header usw. gesetzt haben.
Dort hast du auch Zugriff auf sämtliche Informationen, was den Controller usw. angeht. :slight_smile:

Natürlich hilft dir das nur, wenn du weißt, wie man ein Shopware Plugin generell schreibt.

Vielleicht kommst du damit ja auch weiter. :slight_smile:

Lieben Gruß
Shopware Patrick Stahl

1 Like

Wenn ich meine, dass die URLs für mich nicht maßgebend sein würden, dann nur deswegen, weil ich in Shopware nicht so wirklich tief drinstecke, dass ich wissen könnte, ob man die URL braucht, um den Controller Namen darüber zu bekommen. Ich habe nur eine Schlussfolgerung gezogen, weil die Controller Namen im Template durch keinerlei Ergänzung ja schon zur Verfügung stehen.

Ich weiß jetzt zwar mehr wie vorher, bin aber auch nicht weiter wie vorher. Für mich zählt das Ergebnis und das in kurzer Zeit. Zeit habe ich keine und vor allem keine mich mit Shopware tiefergehend zu beschäftigen wie ich das Plugin mache. Mir solls recht sein, wenn jemand das für Geld macht?

Mir solls recht sein, wenn jemand das für Geld macht?

Im Forum gibt es eine Rubrik für Job-Angebote. Hau rein deine ausführliche Beschreibung und Feuer frei.

1 Like

Super, vielen Dank