MVC und Request-Verarbeitung · Frage 8 von 12
Warum leitet man nach einer createAction() in Extbase üblicherweise mit $this->redirect() auf eine andere Action weiter?
1 Antwort ist richtig. Einfach
Lösung anzeigen
Lösung
- C Damit ein Neuladen der Seite das Formular nicht erneut absendet und keinen doppelten Datensatz erzeugt
Erklärung
Das Muster heißt Post/Redirect/Get: redirect() sendet eine HTTP-Antwort 303 „See Other“, der Browser verwirft den POST-Inhalt und ruft die Zielseite per GET auf. Drückt der Besucher danach F5 oder die Zurück-Taste, wird nur der GET-Aufruf wiederholt – nicht das Absenden des Formulars. Wichtig: redirect() gibt eine Response zurück, man muss also return $this->redirect('list'); schreiben. Flash-Messages funktionieren auch ohne Redirect, sie werden aber standardmäßig in der Session gehalten, damit sie eine Weiterleitung überstehen.