Zum Inhalt springen

Redirect zu anderer Action, pageType mitgeben

Erstellt am 21. November 2011 · 3 Antworten · letzte Antwort am 26. Februar 2012

Tags: JavaScript & AJAX, Frage

tobla ·

Hallo zusammen

Ich habe ein new / create Szenario mit Ajax realisiert. D.h., die Actions werden mit Ajax geladen und in einem Overlay angezeigt. Entsprechend gebe ich einen eigenen pageType mit, da ich ins Overlay nur den Content und keine Pageheader etc. laden möchte.

Ajax Seitenaufruf:

www.myPage.td/pageWithMyPlugin/?tx_myExt[entry]=6&tx_myExt[action]=create&tx_myExt[controller]=Entry&type=myAjaxPageType&...

Nach dem erfolgreichen create leite ich mittels redirect um auf eine andere Action.

$this->redirect('new','Other',NULL,array('entry' => $newEntry));

Nun möchte ich diesem Redirect den oben erwähnten pageType mitgeben (den ich eigentlich beim Ajax Aufruf von create ja bereits mitgebe, durch den redirect jedoch verliere), damit nur der Pagecontent zurück ins Overlay geschickt wird und nicht das ganze Drumrum auch noch.

Wie kann ich einem redirect einen pageType-Parameter mitgeben?

jank ·

Ich glaube das muss im arguments array mit angegeben werden.

$arguments = array (
'type' => '12345',
);
$this->redirect($actionName, $controllerName, $extensionName, $arguments);
tobla ·
jank schrieb

Ich glaube das muss im arguments array mit angegeben werden.

Klappt leider nicht. Ich habe jedoch die richtige Lösung gefunden. Verwendet man den UriBuilder, kann man bequem mit setTargetPageType(myPageTypeNumber) den pageType setzen:

$this->uriBuilder->setRequest($this->request);
$this->uriBuilder->setTargetPageType(myPageTypeNumber); 
$uri = $this->uriBuilder->uriFor('new',array('entry' => $newEntry),'OtherController');
$this->redirectToURI($uri);

Nebenbei noch ein Tipp an alle, mit einem Ähnlichen Problem. Beim UriBuilder kann ein instanziieren mit t3lib_div::makeInstance('Tx_Extbase_MVC_Web_Routing_UriBuilder') zu Problemen mit dem typoLink_URL Generator führen. Sauberer ist die Instanziierung mittels inject-Methode:

/**
 * uriBuilder
 *
 * @var Tx_Extbase_MVC_Web_Routing_UriBuilder
 */
protected $uriBuilder;

/**
 * injectUriBuilder
 *
 * @param Tx_Extbase_MVC_Web_Routing_UriBuilder $uriBuilder
 * @return void
 */
public function injectUriBuilder(Tx_Extbase_MVC_Web_Routing_UriBuilder $uriBuilder) {
	$this->uriBuilder = $uriBuilder;
}
konster ·

Hey tobla!

Vielen Dank für diesen Tipp, er hat mir sicherlich einige Stunden kopfzerbrechen erspart!

Viele Grüße,
konster