首页 > 解决方案 > Typo3 - 如何在 symfony commandController 中获取 extbase 上下文

问题描述

由于 TYPO3 v9.4 不推荐使用 extbase commandController,因此我根据以下内容使用 symfony 控制台命令替换:https ://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/CommandControllers/Index .html#cli 模式

现在我的 FooCommandController 从 Symfony\Component\Console\Command\Command 扩展

因为我需要使用 TYPO3 数据,所以我需要通过 extbase 存储库获取它们。但是我的整个 CommandController 没有 extbase 上下文,因此无法通过 extbase 依赖注入加载 repo。

也无法通过 makeInstance 或 objectManager->get() 手动创建它们,因为在此上下文中没有可用的 objectManager。

访问 symfony commandController 中的 extbase 功能的正确/非hacky方法是什么?

标签: symfonytypo3scheduler

解决方案


ObjectManager“最简单”但不推荐的方法是通过它获取makeInstance()并使用get()它。

更好的方法是将您的逻辑分离到自定义类中,该类使用 Extbase 的依赖注入。然后,您可以以相同的方式获取此类。

使用 V10,您可以只进行注入,因为 DI 在 Extbase 之外可用。


推荐阅读