Zum Inhalt springen

URL erzeugen und GET-Parameter umschreiben

Erstellt am 14. Dezember 2006 · 2 Antworten · letzte Antwort am 14. Dezember 2006

Tags: RealURL, Links, Frage

KaffDaddy ·

Moin Moin !

Vielleicht liegt es ja an der Uhrzeit, aber ich bin gerade am Verzweifeln...

Ich möchte in meiner Extension eine URL basierend auf der aktuellen erzeugen und die Werte eines GET-Parameters austauschen. Folgenden Code fand ich eigentlich ganz sinnvoll:

$redirect_url =  t3lib_div::linkThisUrl( t3lib_div::getIndpEnv('REQUEST_URI'), array( 'tx_myextension_pi1[parameter]' => 'neuerwert' ) );
header('Location: ' . $redirect_url );

Mit linkThisUrl soll es ja möglich sein, bestehende GET-Parameter auszutauschen, laut Definition werden sie aber nur angehängt. Genau dieses passiert hier auch, die erzeugte URL sieht nämlich so aus:

http://localhost/index.php?id=1&tx_myextension_pi1[parameter]=alterwert&tx_myextension_pi1[parameter]=neuerwert

So wird zwar auch der neue Wert letztendlich übergeben, aber die URL-Struktur ist dafür unbrauchbar (zwecks Realurl usw.). Aufgrund der Uhrzeit würde ich sagen, dass mein Code doch nicht so doll ist, wie ich dachte, oder?

Für einen Denkanstoß wäre ich jedenfalls sehr dankbar.

CU
Stephan

steffenk ·

damit simulateStatics oder realurl Deine Links umschreiben, musst Du entweder eine Linkmethode aus piBase nutzen oder die Funktion typolink (this->cObj->typolink)

KaffDaddy ·

Danke für Deine Antwort, aber ich glaube, da hast Du mich mißverstanden. Mir ging es nicht um die Erstellung von Links in a-Tags, sondern um die Erstellung von Links bei gleichzeitigem Umschreiben der Get-Parameter.

Ich hab aber einen Kaffee getrunken und dann fiel mir die Lösung auch gleich in die Augen: Bei tx_myextension_pi1[parameter] handelt es sich natürlich um ein mehrdimensionales Array und das möchte auch dementsprechend behandelt werden.

$redirect_url =  t3lib_div::linkThisUrl( t3lib_div::getIndpEnv('HTTP_REFERER'), array( 'tx_myextension_pi1' => array( 'parameter' => 'neuerwert' ) ) );
header('Location: ' . $redirect_url );

Danke trotzdem 🙂

CU
Stephan