Zum Inhalt springen

Formulareingabe wird gecached

Erstellt am 18. Oktober 2010 · 2 Antworten · letzte Antwort am 19. Oktober 2010

Tags: Frage

Hans1 ·

Hallo zusammen,

ich habe eine Extension geschrieben, die außerhalb von Typo3 bereits super funktioniert. Jetzt steht noch die Integration in Typo3 an. Mit dem Kickstarter habe ich mir eine Extensiongrundlage erstellt (ich brauche keine DB,...).

Um nun etwas bei der Anbindung rumzuprobieren habe ich ein statisches Formular in mein Extension-Template eingebaut und in der main-Methode mache ich nun folgendes:

	function main($content, $conf) {
		$this->conf = $conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		
	
		$tmpl = $this->cObj->fileResource($conf['templateFile']);
		$tmpl = $this->cObj->getSubpart($tmpl, '###P1###');
  
// Fill marker array
$markerArray['###MARKER1###'] = 'HALLO AUF';
$markerArray['###MARKER2###'] = 'SEITE 1';

if(sizeof($_POST) > 0) {
	$markerArray['###MARKER1###'] = 'FORM KAM AN:';
	$markerArray['###MARKER2###'] = $_POST['a'];
}


$content = $this->cObj->substituteMarkerArrayCached($tmpl, $markerArray);

		
		
		return $content;
	}

So weit klappt auch alles, nur wenn ich nun das Formular absende/abgesendet habe muss ich das Formular erst mit STRG+F5 neu laden, damit "FORM KAM AN: TEST" (TEST kommt aus dem Formularfeld) ausgegeben wird.

Ich habe nun in der ext_emconf.php "clearCacheOnLoad" auf 1 gesetzt. Das bringt aber leider nichts.

Woran kann das denn bitte liegen? Kann mir da bitte jemand weiterhelfen?

Bei der Formularverarbeitung selbst bräuchte ich das nicht, aber z.B. bei Validierungsfehlern müssten die ja direkt auf der Seite ausgegeben werden...

Vielen Dank und viele Grüße,

Hansi

trainerth ·

Ich hab das so gelöst

        if(isset($_POST["submit"])){
            $subpart = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['templateFile']), '###FORMULAR_SENDED###');
            $this->sendMail();

        } else {
            $subpart = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['templateFile']), '###FORMULAR###');
        }
Hans1 ·

Hallo trainerh,

danke schön! Ich habe es mittlerweile so gelöst, dass ich einfach abfrage

if($_POST) {
  ...
}

Aber gut zu sehen, dass man das (was ich nun abfrage ist ja egal) so macht.

Hast du eine Idee, wie ich verhindern kann, dass meine Formularseite(n) gecached werden? Lösche ich den Cache der Formularseite bei jedem Aufruf (für diese Seite) oder kann ich das generell für die Seiten der Extension in der ext_emconf.php einstellen? Wie gesagt, ich habe ja bereits clearCacheOnLoad auf 1 gesetzt.

Vielen Dank und viele Grüße,

Hansi