TYPO3 如何在钩子中注入对象管理器?



>也许它很简单,但我无法弄清楚。

TYPO3 8.7:我正在编程一个小钩子:如果满足某个条件,我想发送电子邮件。因此,我需要电子邮件模板的独立视图。但是对于独立视图,我需要对象管理器:

/** @var TYPO3CMSFluidViewStandaloneView $emailView
$emailView = $this->objectManager->get('TYPO3\CMS\Fluid\View\StandaloneView');

在我的课程开始时,我试图注入对象管理器:

/**
* @var TYPO3CMSExtbaseObjectObjectManagerInterface
*/
protected $objectManager;
/**
* @param TYPO3CMSExtbaseObjectObjectManagerInterface $objectManager
* @internal
*/
public function injectObjectManager(TYPO3CMSExtbaseObjectObjectManagerInterface $objectManager)
{
$this->objectManager = $objectManager;
}

但它不起作用:我遇到了一个错误:对象管理器是一个空对象。这显然意味着钩子中不存在注射机构。

那么如何才能做到这一点呢?

Extbase 依赖注入在钩子中不可用,因此您必须自己创建对象的实例。

$standaloneView = GeneralUtility::makeInstance(TYPO3CMSExtbaseObjectObjectManager::class)
->get(TYPO3CMSFluidViewStandaloneView::class);

最新更新