TYPO3 Tipps und Tricks: Extbase Objekte Erweitern / Table mapping in TYPO3 10

In TYPO3 kann man Extbase Objekte aus dem Core oder aus anderen TYPO3-Extensions mit neuen/eigenen Feldern erweitern. Bis TYPO3 9 hat man das Mapping auf "eigene" Models über TypoScript erledigt, in TYPO3 Version 10 hat sich das geändert. In diesem Beitrag zeigen wir anhand der FileReference aus dem TYPO3-Core wie man diese auf ein eigenes Model mapped.

Um ein bestehendes Extbase-Objekt zu erweitern, muss man die Datei EXT:va_extension/Configuration/Extbase/Persistence/Classes.php mit folgendem Inhalt anlegen:

<?phpdeclare(strict_types = 1);return [    //Klasse des Models    \Varioous\VaExtension\Domain\Model\FileReference::class => [        //Name der Tabelle auf welches das Model gemapped wird        'tableName' => 'sys_file_reference',        //Optional kann man noch Felder mappen        'properties' => [            'originalFileIdentifier' => [                'fieldName' => 'uid_local'            ]        ]    ],];

Aktuelle Förderungen für digitale Projekte - DIGITAL STARTER 22 - KMU Digital - go international

Für ein erfolgreiches Business ist die Präsenz in der digitalen Welt mittlerweile unvermeidbar. Neben klassischen Online-Auftritten werden auch zunehmend diverse Prozesse digitalisiert und so automatisiert abgewickelt. Um die Digitalisierung in unserem Land weiter voran zu treiben, werden dementsprechende Förderungen angeboten, um Unternehmen diesen Schritt in die Digitalisierung zu erleichtern.

Förderungen im Überblick

Abschließend muss das mapping noch in der ext_localconf.php Datei definiert werden (per XCLass):

/************************************************************************ * XCLASS ************************************************************************/$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][TYPO3\CMS\Extbase\Domain\Model\FileReference::class] = [    'className' => \Varioous\VaExtension\Domain\Model\FileReference::class,];// Register extended domain class\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class)    ->registerImplementation(        TYPO3\CMS\Extbase\Domain\Model\FileReference::class,        \Varioous\VaExtension\Domain\Model\FileReference::class    );

Nun kann man bereits das Model und das Repository erweitern (einfach von der ursprünglichen Klasse erben):

class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {   //Model mit eigenen Feldern erweitern}class PageRepository extends \TYPO3\CMS\Core\Domain\Repository\PageRepository {  //Repository erweitern mit eigenen Funktionen  //Am Beispiel PageRepository, da es kein FileReferenceRepository gibt}

Wir entwickeln digitale Lösungen mit Leidenschaft

Warum wir das tun? Weil die Verwirklichung Ihrer Vision unser größter Anspruch und die schönste Anerkennung ist. Deshalb nehmen wir uns gerne ausreichend Zeit für die Realisierung Ihres digitalen Projekts.

Kontaktieren Sie uns, wir sind gerne für Ihre Fragen da:

Passend zu diesem Thema:

TYPO3 Tipps und Tricks: Cache für einzelne Extbase-Objekte leeren

TYPO3 Tipps und Tricks: Cache für einzelne Extbase-Objekte leeren

Kürzlich bin ich bei einem Projekt vor folgendem Problem gestanden: Per Plugin werden Extbase-Objekte auf einer Seite ausgegeben und diese auch gecach…

TYPO3 Tipps und Tricks: Manueller/Programmatischer Login in Controller-Action (TYPO3 9)

TYPO3 Tipps und Tricks: Manueller/Programmatischer Login in Controller-Action (T…

Manchmal gibt es bei Web-Projekten die Notwendigkeit einen Login programmatisch (manuell, im PHP-Code) durchzuführen. Ein Kunde hat vor kurzem folgend…

TYPO3 Tipps und Tricks: Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-Container

TYPO3 Tipps und Tricks: Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-C…

In diesem Blogbeitrag zeigen wir, wie man eine Microsoft SQL-Server (MSSQL) Datenbank in einem Docker-Container mit ddev laufen lässt. Zusätzlich werd…