经过更多研究后,我发现缺少一些引导程序,导致扩展设置(在我的情况下为 storageID)未加载。从我一直在阅读的内容来看,我猜这种行为似乎是为了防止 extbase 启动?
官方文档中有类似内容的引用:https ://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/CommandControllers/Index.html#initialize-backend-user
知道那,我试图找到一种方法来初始化我找不到的缺失设置。所以这确实看起来像是一个缺失的功能。
我开发了一个我不太引以为豪的解决方法,但总比没有好(或就此将一切重建为教义)。如果你偶然发现了同样的问题,那就去吧。只需在触发查询之前插入并调用此方法:
public static function initializeConfigurationManager(): void
{
/** @var ConfigurationManager $configurationManager */
$configurationManager = GeneralUtility::makeInstance(ConfigurationManager::class);
$tmpConfiguration = $configurationManager->getConfiguration(
ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK,
'myExtensionName'
);
$configurationManager->setConfiguration($tmpConfiguration);
}
该方法利用了 ConfigurationManager 的单例状态。您只需手动注入扩展的静态模板,然后每个 extbase 化合物(如存储库)将从那里使用这些设置。迷人的。
但是请注意,这很容易随着未来的内部变化而中断。