我使用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');
答案 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