.. ================================================== .. FOR YOUR INFORMATION .. -------------------------------------------------- .. -*- coding: utf-8 -*- with BOM. Domain ====== Model and Repositories ---------------------- The extension comes with a set of models and repositories for the most basic doktypes. We recommend to check them and to extend them if needed. Check especially :: form4_pages/src/Classes/Domain/Model/AbstractPage.php form4_pages/src/Classes/Domain/Model/AbstractLargePage.php and :: form4_pages/src/Classes/Domain/Repository/AbstractPageRepository.php The other models and repositories of the doktypes are extended from these base classes. If you have extended the pages records you have to use these to expand your classes. Doktype Manager --------------- The extension contains a class named DoktypeManager which acts as an repository for all doktypes and possible doktype entities. It reads the Extbase persistance configuration to map doktypes on domain model classes. Following an excerpt from the ext_typoscript_setup.txt of the extension. :: config.tx_extbase.persistence.classes { FORM4\Form4Pages\Domain\Model\AbstractPage { mapping.tableName = pages } FORM4\Form4Pages\Domain\Model\AbstractLargePage < .FORM4\Form4Pages\Domain\Model\AbstractPage FORM4\Form4Pages\Domain\Model\Page < .FORM4\Form4Pages\Domain\Model\AbstractPage FORM4\Form4Pages\Domain\Model\LargePage < .FORM4\Form4Pages\Domain\Model\AbstractLargePage FORM4\Form4Pages\Domain\Model\Standard < .FORM4\Form4Pages\Domain\Model\AbstractLargePage FORM4\Form4Pages\Domain\Model\Standard { mapping.recordType = 1 } FORM4\Form4Pages\Domain\Model\Shortcut < .FORM4\Form4Pages\Domain\Model\AbstractLargePage FORM4\Form4Pages\Domain\Model\Shortcut { mapping.recordType = 4 } FORM4\Form4Pages\Domain\Model\External < .FORM4\Form4Pages\Domain\Model\AbstractLargePage FORM4\Form4Pages\Domain\Model\External { mapping.recordType = 3 } } This configuration causes the doktype manager to create the following mapping. When the DoktypeManager is as a repository it will return instances of different classes for the doktype 1, 4 and 3. For other doktypes 'LargePage' will be used. :: [ 'default' => [ 0 => 'FORM4\Form4Pages\Domain\Model\LargePage' ], '1' => [ 0 => 'FORM4\Form4Pages\Domain\Model\Standard' ], '4' => [ 0 => 'FORM4\Form4Pages\Domain\Model\Shortcut' ], '3' => [ 0 => 'FORM4\Form4Pages\Domain\Model\External' ] ] If you want to use this feature in one of your own repositories, inject the DoktypeManager and overwrite the method "createQuery". :: class YourPageRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { /** * doktypeManager * * @var \FORM4\Form4Pages\Helper\DoktypeManager * @inject */ protected $doktypeManager; /** * Returns a query for objects of this repository. * * @return \TYPO3\CMS\Extbase\Persistence\QueryInterface * @api */ public function createQuery() { return $this->doktypeManager->createQuery(); } }