TYPO3 Extbase - 依赖注入是否在服务类中工作?

时间:2016-10-26 08:34:10

标签: typo3 extbase typo3-7.6.x

我使用auth类型的服务添加基于API的登录。 我试图通过@inject添加一个带有Extbase的FrontendUserRepository的用户。 但这不起作用。

我做错了什么,或者是否要尽早使用依赖注入?

P.S。:我知道我可以通过以下方式使用存储库:

$objectManager = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$this->frontendUserRepository = $objectManager->get('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserRepository');

2 个答案:

答案 0 :(得分:6)

带有@Inject注释的DI仅适用于由TYPO3 \ CMS \ Extbase \ Object \ ObjectManager实例加载的对象。使用GeneralUtility::makeInstanceService()实例化身份验证服务,而GeneralUtility::makeInstance()又使用TYPO3\CMS\Core\Authentication\AbstractUserAuthentication::checkAuthentication()(请参阅@Inject),因此char lib[1000]注释无效。 您必须自己使用已提到的解决方法。

答案 1 :(得分:0)

[typo3 7.6] 我认为在auth服务中所有的extbase内容都没有正确加载。尝试在auth服务中使用extbase repos时(我在控制器的上下文中运行很好),我有很多错误。我找到了一个关于可能缺少部分初始化的链接:Extbase innerhalb eines TYPO3 Authentication Services verwenden