2016-10-26 27 views
0

我正在使用類型爲auth的服務來添加基於API的登錄。 我試圖通過@inject添加一個帶有Extbase的FrontendUserRepository的用戶。 但這不起作用。TYPO3 Extbase - 依賴注入在服務類中工作嗎?

我做錯了什麼或者這是爲了儘早使用依賴注入?

P.S:我知道我可以使用存儲庫的方式如下:

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

回答

4

DI與@Inject註釋僅適用於由TYPO3 \ CMS \ Extbase \對象\的ObjectManager實例加載的對象。身份驗證服務使用GeneralUtility::makeInstanceService()進行實例化,後者使用GeneralUtility::makeInstance()(請參閱TYPO3\CMS\Core\Authentication\AbstractUserAuthentication::checkAuthentication()),因此@Inject註釋不起作用。 您必須使用自己提到的解決方法。

+0

你說得對。但請看這篇關於[注入方法]的文章(https://gist.github.com/NamelessCoder/3b2e5931a6c1af19f9c3f8b46e74f837)。 '@ inject' -way可能不是最好的,即使它更短。 我爲TYPO3的'@ inject'需求花了很多時間進行故障排除 – unherz