Die Idee ein eigenes Model anzulegen war doch schon richtig. Ich würde sie so erweitern. Aber dass ist dann Geschmackssache, ob man lieber mit einem alias arbeitet oder den Klassennamen prefixed mit "Extended", wie in Deinem Dummy. BTW: In Deinem Dummy sind die Typen übrigens falsch bei der Setter-Methode.
Classes\Domain\Model\Category.php
<?php
namespace Tmd\Key\Domain\Model;
use TYPO3\CMS\Extbase\Domain\Model\Category as OrigCategory;
class Category extends OrigCategory
{
/**
* @var int
*/
protected $levelUse = 0;
/**
* @return int
*/
public function getLevelUse(): int
{
return $this->levelUse;
}
/**
* @param int $int
*/
public function setLevelUse(int $levelUse): void
{
$this->levelUse = $levelUse;
}
}
Dann muss Extbase wissen, welche Tabelle das neue Model verwenden soll.
Configuration\Extbase\Persistence\Classes.php
<?php
declare(strict_types=1);
return [
\Tmd\Key\Domain\Model\Category::class => [
'tableName' => 'sys_category',
],
];
Und dann muss TYPO3 ja auch irgendwie wissen, dass es Deine erweiterte Klasse verwenden soll.
ext_localconf.php
<?php
defined('TYPO3') || die('Access denied.');
use TYPO3\CMS\Core\Utility\GeneralUtility;
call_user_func(
function () {
// Extend Categories
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\TYPO3\CMS\Extbase\Domain\Model\Category::class] = [
'className' => \Tmd\Key\Domain\Model\Category::class
];
GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class)
->registerImplementation(
\TYPO3\CMS\Extbase\Domain\Model\Category::class,
\Tmd\Key\Domain\Model\Category::class
);
// Extend CategoryRepository
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\TYPO3\CMS\Extbase\Domain\Model\CategoryRepository::class] = [
'className' => \Tmd\Key\Domain\Model\CategoryRepository::class
];
GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class)
->registerImplementation(
\TYPO3\CMS\Extbase\Domain\Model\CategoryRepository::class,
\Tmd\Key\Domain\Model\CategoryRepository::class
);
}
);
Jetzt solltest Du Zugriff auf Dein erweitertes Feld haben.