首页 文章

TYPO3 - itemsProcFunc中检索到的TypoScript不完整

提问于
浏览
0

我有以下问题:我们用自定义列覆盖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 回答

  • 1

    你可能误解了TypoScipt的目的 . 这是 Frontend 的一种配置方式 . 您提到的Hook用于TCA,这是TYPO3的一部分 . TypoScript通常不用于后端相关的东西,因为它绑定到特定的页面模板记录 . 而在后端,有TSConfig,可以绑定到页面,但也可以全局添加 . 你做错的另一件事是使用ObjectManager和ConfigurationManager,它们是extbase的类,它在后端没有初始化 . 我建议不要在TCA中使用extbase,因为TCA是为每个页面请求缓存和加载的 . 而是使用TSConfig或直接将配置设置提供给TCA . 不要初始化extbase,也不要在这些钩子中使用extbase类 . 根据您要通过TypoScript配置的内容,您可能希望执行以下操作:

    'config' => [
        'type' => 'select',
        'renderType' => 'singleSelect',
        'items' => [
            ['EXT:my_ext/Resources/Private/Language/locallang_db.xlf:myfield.I.0', '']
        ],
        'itemsProcFunc' => \VENDOR\MyExt\UserFunctions\FormEngine\TypeSelectProcFunc::class . '->fillSelect',
        'customSetting' => 'somesetting'
    ]
    

    然后在你的课程中访问它:

    class TypeSelectProcFunc{
        public function fillSelect(&$params){
            if( $params['customSetting'] === 'somesetting' ){
                $params['items'][] = ['New item',1];
            }
        }
    }
    

相关问题