我正在 Extbase 中构建一个扩展(最新版本,最新的typo3),并且我的模型中注入了存储库。
这根本行不通。没有错误,没有线索,什么都没有。inject* 方法根本不会被调用。完全相同的 Injection 在控制器中工作。
是否可以将存储库注入 Extbase 中的模型?一般来说,从 1.4 开始可以注入模型。
我该如何调试呢?我必须在哪里看?
这是一个普遍的误解:
默认情况下,并非您在 TYPO3 CMS 中使用的每个类都使用依赖注入 - 这是一件好事。
事实是,ObjectManager 实例化的每个对象都可以从中受益。
简而言之:如果你new Thing()
反对,它不会从依赖注入中受益。如果你使用ObjectManager
来获取某个东西的实例,整个依赖注入会在你的新实例上下雨:
initializeObject
调用公共方法(如果存在)请注意,注入的对象也由 objectManager 实例化,因此如果注入ServiceA
需要注入的ServiceB
.
如果您实现标记接口,单例也是可能的SingletonInterface
。
依赖注入仅在您通过ObjectManager
. 如果您使用的是好的 ol'
t3lib_div::makeInstance('Tx_yourextension_domain_model_thing')
注入* 方法没有被调用。
有一个德语博客条目解释了它是如何工作的。