TYPO3 Adventskalender 2025

23.12.2025: Module und Button API

Wer schonmal ein eigenes TYPO3-Backendmodul geschrieben hat ist sicherlich über die “Module API” gestolpert.

Diese ermöglicht es unter anderem im sogenannten “Doc-Header” Dinge anzupassen. In Adventstür Nr. 4 wurde hier auch über die Neuerungen der Breadcrump API berichtet, und im neuen Design hat sich die Platzierung auch schon leicht verändert.

Parallel dazu gab es die “Button API” die jedoch mit einer eher unkonventionellen API Buttons für diesen Modul-Bereich erzeugen ließ.

In der Datensatz-Ansicht und der Dateiliste vom TYPO3-Backend kamen auch immer zahlreiche Buttons pro Zeile zum Einsatz, die im TYPO3-Kern mit rohem HTML ausgegeben wurden, und auch in PSR-14-Eventlistenern (ModifyRecordListRecordActionsEvent und ProcessFileListActionsEvent) so angesprochen wurden.

Mit der neuen “Button Component Factory API” wird nun beides geändert: Zum einen gibt es hübsche Factory-Methoden zur Erzeugung von HTML-Buttons und Menü-Komponenten (im PHP-Scope, mit Definition als Dropdown, große Buttons, kleine Buttons usw.) mit einfachen Standard-Buttons (Vor/Zurück, Reload, Sharing, …).

Auch die DocHeader-Komponenten nutzen nun diese Button Component API, so dass man die alten Methoden `ButtonBar::make…` und `Menu::makeMenuItem` nicht mehr verwenden sollte.

Die neue API unterstützt ein fluent Interface, hier ein Code-Beispiel:

<?php 
 
use Psr\Http\Message\ResponseInterfaceuse TYPO3\CMS\Backend\Template\Components\ButtonBaruse TYPO3\CMS\Backend\Template\Components\ComponentFactory; 
 
final readonly class MeinBackwerkController 
{ 
    public function __construct( 
        private ComponentFactory $componentFactory, 
    {} 
 
    public function editAction(): ResponseInterface 
    { 
        // Kontext beziehen 
        $buttonBar = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar(); 
 
        // "Zurück"-Button 
        $backButton = $this->componentFactory->createBackButton($returnUrl); 
        $buttonBar->addButton($backButtonButtonBar::BUTTON_POSITION_LEFT1); 
         
        // Eigener Button 
        $linkButton = $this->componentFactory->createLinkButton() 
            ->setHref($url) 
            ->setTitle('Adventstür öffnen') 
            ->setIcon('weihnachtsbaum'); 
        $buttonBar->addButton($linkButtonButtonBar::BUTTON_POSITION_LEFT2); 
    } 
} 

BITV Check - Wir prüfen Ihre Website oder Ihr digitales Produkt.

Wir setzen die Projekte unsere Kunden nicht nur BITV-konform um, wir prüfen auch Websites, Apps und digitale Produkte hinsichtlich der gesetzlichen Anforderungen. Buchen Sie unser 30-Minten-Erstgespräch - unverbindlich, klar und kompetent. Denn digitale Barriefreiheit ist Pflicht.