Extbase:将存储库注入域模型

Extbase: inject repository into domain model

我目前正在使用 Typo3 6.2.10 和 Extbase。

我正在尝试将存储库注入我的域模型,如下所示:

class MyModel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    /**
     * @inject
     * @var \Vendor\Package\Domain\Repository\SomeRepository
     */
    protected $someRepository;
}

然而,$this->someRepository 总是 null。不过,将存储库注入控制器始终有效。

提前致谢!

抱歉,我自己找到了解决方案。

我尝试使用 new 关键字实例化模型,但 (ofc) 不起作用

我不得不改用 $this->objectManager->get('\Vendor\Package\Domain\Model\MyModel');

请记住,在使用 $this->objectManager->get(xxx); 时,您必须省略 class 名称中的第一个 \否则这一行将在 typo3 7.x+ 中抛出异常。

$this->objectManager->get('Vendor\Package\Domain\Model\MyModel');

反斜杠也是一个转义字符,所以转义反斜杠或者只使用 class

的静态常量更安全

逃脱:

$this->objectManager->get('Vendor\Package\Domain\Model\MyModel');

使用静态 class 名称:

$this->objectManager->get(\Vendor\Package\Domain\Model\MyModel::class);

我更喜欢用最后一种方法,因为你可以看到你是否打错了(取决于IDE)