Hintergrund
In Extbase-Projekten kommt es oft vor, dass man innerhalb eines Controllers die Logik in eine andere Action „umleiten“ möchte. Bisher griff man dazu klassisch auf
$this->forward('list');
zurĂĽck.
Mit TYPO3 11 wurde dieser Ansatz jedoch als veraltet markiert. Der Grund: TYPO3 setzt inzwischen vollständig auf PSR-7-konformes Response-Handling, und die alte Methode passte nicht mehr zu diesem Architekturprinzip.
Um trotzdem Weiterleitungen komfortabel abbilden zu können, wurde die Klasse TYPO3\CMS\Extbase\Http\ForwardResponse eingeführt.
Der neue Ansatz
Anstatt wie früher eine Methode „abzubrechen“, wird nun eine Response zurückgegeben, die TYPO3 selbstständig verarbeitet. Das sorgt für mehr Transparenz und eine saubere Abfolge von Controller-Logik.
use TYPO3\CMS\Extbase\Http\ForwardResponse;
use Psr\Http\Message\ResponseInterface;
public function redirectToListAction(): ResponseInterface
{
return new ForwardResponse('list');
}
Damit landet der Flow direkt in der Action list desselben Controllers.
Erweiterte Nutzung
Spannend wird es, wenn man Weiterleitungen genauer steuern will:
public function customForwardAction(): ResponseInterface
{
return (new ForwardResponse('list'))
->withControllerName('Record')
->withExtensionName('DemoExtension')
->withArguments(['fromForward' => true]);
}
➡ Hier wird gezielt in einen anderen Controller der Extension weitergeleitet – zusätzlich mit eigenen Parametern.
Das macht Weiterleitungen wesentlich flexibler, gerade wenn ein Plugin mehrere Controller bedient.
Worauf man achten sollte
- Klarheit geht vor: Nutze ForwardResponse nur, wenn ein logischer Grund für die Weiterleitung besteht – zu viele Weiterleitungen machen die Anwendung unübersichtlich.
- Explizite Angaben: Bei mehreren Controllern oder Actions mit ähnlichen Namen empfiehlt es sich, Extension- und Controllername klar zu setzen.
- Argumente sparsam halten: Übergib nur wirklich notwendige Daten, damit die Ziel-Action nicht unnötig komplex wird.
- Kompatibilität sichern: Alte Aufrufe mit $this->forward() sollten nach und nach ersetzt werden, damit der Code zukunftsfähig bleibt.
Fazit
Mit der EinfĂĽhrung von ForwardResponse hat Extbase einen wichtigen Schritt in Richtung moderner Architektur gemacht.
Statt „unsichtbarer“ interner Sprünge geben wir heute explizite Responses zurück. Das macht den Code besser nachvollziehbar, stabiler und im Einklang mit PSR-7.
Wer also Projekte auf TYPO3 11 oder höher entwickelt, sollte die Gelegenheit nutzen, alte Weiterleitungen zu modernisieren – und dabei auf ForwardResponse setzen.