我有以下问题:我们用自定义列覆盖tt_content TCA,该列在其配置中有一个itemsProcFunc . 在函数中我们尝试检索TypoScript-Settings,因此我们可以动态显示项目 . 问题是:在函数中我们没有收到所有TypoScript-Settings,它们包括在内但只有一些 .
'itemsProcFunc' => 'Vendor\Ext\Backend\Hooks\TcaHook->addFields',
class TcaHook
{
public function addFields($config){
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManagerInterface');
$setup = $configurationManager->getConfiguration(
\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT
);
}
$setup 现在不完整,并且不包含完整的TypoScript,例如缺少一些静态包含的TypoScript .
在作曲家模式中使用TYPO3 7 LTS(7.6.18),PHP 7.0 . * .
有人知道问题出在哪里吗?还有其他选择吗?
1 回答
你可能误解了TypoScipt的目的 . 这是 Frontend 的一种配置方式 . 您提到的Hook用于TCA,这是TYPO3的一部分 . TypoScript通常不用于后端相关的东西,因为它绑定到特定的页面模板记录 . 而在后端,有TSConfig,可以绑定到页面,但也可以全局添加 . 你做错的另一件事是使用ObjectManager和ConfigurationManager,它们是extbase的类,它在后端没有初始化 . 我建议不要在TCA中使用extbase,因为TCA是为每个页面请求缓存和加载的 . 而是使用TSConfig或直接将配置设置提供给TCA . 不要初始化extbase,也不要在这些钩子中使用extbase类 . 根据您要通过TypoScript配置的内容,您可能希望执行以下操作:
然后在你的课程中访问它: