Extbase:将存储库注入域模型

时间:2015-03-10 11:57:07

标签: extbase

我目前正在使用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。将存储库注入控制器总是有效。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

请注意,使用$ this-> objectManager-> get(xxx)时,必须省略类名中的第一个\;或者此行将在typo3 7.x +中抛出异常。

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

反斜杠也是一个转义字符,因此转义反斜杠或仅使用类的静态常量更安全

转义:

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

使用静态类名:

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

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

答案 1 :(得分:0)

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

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

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