Zum Inhalt springen

redirect mit verschiedenen Parametern

Erstellt am 4. März 2011 · 3 Antworten · letzte Antwort am 14. März 2013

Tags: Frage

r0n ·

Hallo Leute,

ich habe ein Problem mit einer Weiterleitung.
Ich habe eine Extension für tt_news geschrieben, in der man sich einzelne Newsbeiträge merken kann.

Wenn ich nun auf 'Hinzufügen' klicke wird das auch durchgeführt. Nur habe ich in meinem Controller in der create Funktion ein

$this->redirect('index')

Bei diesem redirect werden sämtliche Parameter der Url einfach weggelassen. Sprich, ich komme auf meine tt_news Singleansicht Seite, aber die NewsId wird nicht mehr mit übergeben.

Gibt es eine Möglichkeit, dass die Parameter mit übergeben werden?

Im Template ist

addQueryString=1

in den Links gesetzt und sind vor dem redirect auch vorhanden.

In der redirect Funktion kann man zwar Argumente mitgeben, diese werden jedoch immer als Argumente meiner Extension weitergegeben.

Ich hoffe hier kann mir jemand helfen.

Gruß r0n

sunixzs ·

Hallo,

schau dir mal die parents von deiner controller-Klasse an:

typo3/sysext/extbase/Classes/MVC/Controller/AbstractController.php

bei den Redirect-Methoden gibt es einige Parameter...

protected function redirect($actionName, $controllerName = NULL, $extensionName = NULL, array $arguments = NULL, $pageUid = NULL, $delay = 0, $statusCode = 303) {}
protected function redirectToURI($uri, $delay = 0, $statusCode = 303) {}

Vllt. ist da ja was dabei.

r0n ·

Hallo,
danke für Kommentar.

Die Klasse hatte ich mir schon vorher angeschaut, aber wie gesagt, das Problem besteht, dass die $arguments als Argumente meines Controllers behandelt werden.

Also würde ich das Argument

array('tt_news' => 1)

übergeben, würde nachher in der Url stehen:

index.php?id=21&tx_myext_pi1[tt_news]=1

rauskommen soll natürlich:

index.php?id=21&tx_ttnews[tt_news]=1

Ich kann ja auch keinen anderen Controller angeben, da ich ja wirklich zu meinem Controller redirecten möchte.

Eine Variante wäre es, alle GET Parameter einzulesen und den redirect selbst durchzuführen. Aber ich wollte lieber nochmal fragen, bevor ich damit anfange, ob es nicht irgendwie leichter geht.

harald1972 ·

Wenn als Extension 'tx_ttnews' rein soll, muss das da rein:
Parameter $extensionName

$this->redirect('index', Null, 'tx_ttnews', array(...));

Wenn weitere Parameter benötigt werden, müssen die in das Array mit rein.
Z.B so in der Art

array('extname'=>'myext', 'newsId'=>$newsId, 'foostring'=>'bar', 'foovalue'=>$bar)

Dann musst du in der createAction natürlich darauf Bezug nehmen, sonst passiert nichts mit den übergebenen Werten.

Hoffe, das hilft irgendwie

Gruß Harald