8 Reaktionen zu “Controller action switch durch GET Paramter”

Kommentare abonnieren (RSS) oder TrackBack URL

Gute Idee – ich habe das bisher immer im Controller aufgelöst, Deine Lösung finde ich viel eleganter. Danke!

Rainer Becker am 08. November 2013 um 15:24

Freut mich, das Dir hilft 🙂

Nikolas Hagelstein am 08. November 2013 um 15:57

eine andere möglichkeit sind die fixedPostVars in realUrl, die musst du aber auf Seiten-IDs binden :).

frank am 08. November 2013 um 16:09

aber eben nicht, wenn du das auf der gleichen seiten ID abfackeln willst.

Nikolas Hagelstein am 08. November 2013 um 16:31

Mir scheint dass es nicht möglich ist auf diese Weise zusätzlich zur Action auch den Controller zu switchen.

Beispiel: ich habe ein plugin mit default controllerAction „category->list“ und möchte es auf derselben Page in den modus „product->show“ switchen sobald ein GET-Parameter „product“ in der URL existiert. .

Lässt man so das Controller-Argument im Action-Viewhelper weg und setzt es stattdessen mit config.defaultGetVars.tx_myplugin.controller = Product

dann ruft das Plugin weiter den konfigurierten default-controller auf (in diesem fall „category“) auf.

Es funktioniert also nur auf dem klassischen Wege indem ich den controller explizit im action-viewHelper bzw. in der URL angebe.

Oder mache ich etwas falsch?

Moritz am 27. Juli 2014 um 18:41

Klasse, hat bei mir super funktioniert.
Danke für den tollen Tipp!

SenioreT am 25. Oktober 2014 um 19:42

Bin durch Dr. Google auf die Page gekommen, super Tipp. Danke

Ich habe hierbei nur folgendes Problem, Typo3 cacht in der Listenansicht manchmal einfach die Seite der Detailansicht.
D.h. die Listenansicht wird angesprungen aber er zeigt eine Detailseite an. Das ganze liegt am Typo3-PageCache. Ein Aufruf mit no_cache=1 zeigt dann wieder die Listenansicht.

Kommt Dir/Euch das Problem bekannt vor?

Marcel am 27. November 2014 um 12:51

Ich weiss, der Artikel hier ist alt, aber wird trotzdem gelegentlich Verlinkt. Deswegen bringe ich hier mal eine bessere Lösung des Problems ohne „Typoscript-Weiche“ an. Man kann fehlende show()-Parameter nämlich auch in der initialization abfragen und dann ggf. umleiten:

/**
* initialize action show
* @return void
*/
public function initializeShowAction() {
if($this->request->hasArgument(‚bier‘)){
if( $bier=$this->bierRepository->findByUid(
intval($this->request->getArgument(‚bier‘))
) ){
$this->request->setArgument(‚bier‘,$bier);
return;
}
}
$this->forward(‚list‘);
}

Andreas Sauer am 10. August 2016 um 11:13

Kategorien

Archiv