Zum Inhalt springen

ExtBase GET POST Paramter holen

Erstellt am 19. Januar 2012 · 8 Antworten · letzte Antwort am 13. Dezember 2013

Tags: Frage

besucher80 ·

Hallo,

ich habe eine Extension die mittels ExtBase und Fluid erstellt wurde.
Wie kann ich mit ExtBase POST oder GET Parameter holen / auslesen?

Bei der pibase-Extension früher hat man ja immer t3lib_div::_GP('irgendwas') verwendet.

Gibt es denn was spezielles für ExtBase um das zu erledigen?

besucher80 ·

HM, okay. Danke. Das ja schonmal gut zu wissen. Aber wie verhält es sich mit normalen Links ohne prefix. Also show=test anstelle von tx_myextension_pi1[show]=test. Da dann einfach t3lib_div::_GP('show') verwenden?

BFSven ·

Hallo besucher,

Da in Extbase ja immer eine Action angesprungen wird, kannst Du in Deiner Action die Parameter als Argumente übergeben.
Bsp:
Extensionname: Besucher
Pluginname: Hilfe
Parametername: Fragen (nehmen wir an, es sind mehrere, also ein Array)
Spezielle Variable: Frage1

dann sieht deine Action so aus:

class Tx_Besucher_Controller_HilfeController extends Tx_Extbase_MVC_Controller_ActionController {
  public function indexAction($fragen) {
    $frage1 = $fragen['frage1'];
  }
}

Aufpassen musst du dann natürlich bei der Übergabe der Parameter:
http://www.deineseite.de/fragenkatalog/index.php&tx_besucher_hilfe[fragen][frage1]=BekloppteFrage

Ist jetzt alles aus dem Kopf, wenn was falsch ist, bitte melden, dann korrigier ich es.

Gruß Sven

ps: Bevor Du hier bei jeder Frage ein Thema aufmachst, suche Dir bitte auch ein Tutorial 😉

besucher80 ·

Hallo, danke für die Antwort aber das war jetzt nicht sehr hilfreich. Ich weiß schon das eigentlich immer ein Controller-/Action Kombination aufgerufen wird. Aber in einem Fall möchte ich das halt nicht. Das benutze ich einfach einen normalen Link:

<f:link.page pageUid="123" additionalParams="{foo:bar}">
Klick mich!
</f:link.page>

Dieser Link sieht dann so aus:
DOMAIN/index.php?id=123&foo=bar

Es wird nun auf die Seite 123 umgeleitet und dort nun der Strandard Controller-/Action Kombinatin aufgerufen. Wie kann denn nun aber in meiner Action den Parameter foo auslesen? Es gibt ja $this->request->getArgument('variable'). Geht das denn für alle Links: tx_myext_pi1[foo]=bar und foo=bar?

BFSven ·

Wenn wir Dir helfen sollen, sind Aussagen wie "das möchte ich halt nicht" auch wenig hilfreich.

getArgument('variable') ist nur bei "tx_myext_pi1[variable]=bar" einsetzbar. Da Du den Link ja selbst erstellst, kannst Du den Parameter doch anpassen, oder? Wenn Du den Link nicht anpassen kannst (weil es z.B. von außen kommt), dann müsste ich jetzt erst selbst suchen, wie man das macht. Dafür habe ich aber grad keine Zeit, denn ich antworte hier in dem Forum in meiner Freizeit und wenn man sich hier Mühe macht auf Fragen eine Antwort zu finden, die dann auch noch im Sinne der Extbase-Entwickler ist, als Antwort dann aber "das war jetzt nicht sehr hilfreich" bekommt, dann vergeht einem echt die Lust zu helfen.
Das mal nebenbei.

b2t: wenn du den Link mit Fluid erstellst und auf der Zielseite mit Extbase arbeitest, ist meine vorgestellt Lösung die sauberste und auch bei Dir ohne Probleme einsetzbar.

So, jetzt hab ich aber doch nochmal das request-Objekt debugt und da finde ich keine "unsauberen" Parameter. Ich würde dann wahrscheinlich auf die pibase-Methode zurückgreifen, aber ich betone nochmal (auch für andere, die das Problem haben), ich halte es NICHT für sauber!

emeh ·

Es gibt aber Situationen, in denen die POST-Daten von extern kommen. Ich sitze z.B. gerade daran, die Paypal-IPN-Daten zu verarbeiten. Ich frage mich daher gerade, ob es eine Möglichkeit gibt, sauber auf POST-Daten zuzugreifen. Sauber im Sinne von "TYPO3 hat sich bereits um das Ausmerzen von Angriffen gekümmert und lässt nur vernünftige daten durch". Ansonsten kann man natürlich auch jederzeit auf die superglobale $_POST-Variable zugreifen.

tobla ·

Hallo Zusammen

Weiss jemand von euch den Namespace und den Namen von t3lib_div::GP('param') bei Typo3 6.1? Ich finde nirgends eine Liste welche Funktion neu wie heisst bei T3 6.1.

Gruss