【问题标题】:How to use DataProcessors with TYPO3 plugins如何将 DataProcessors 与 TYPO3 插件一起使用
【发布时间】:2019-05-21 12:38:55
【问题描述】:

经常显示将 DataProcessor 添加到 PAGE 或 FLUIDTEMPLATE 的方法。如何分配给 TYPO3 插件?

对于 PAGE,您可以这样做:

page {
    10 {
        dataProcessing {
            1558428437 = BK2K\BootstrapPackage\DataProcessing\ConstantsProcessor
            1558428437 {
                as = myconstants
                key = settings.constants
            }
        }
   }
}

但是你能做这样的事情吗:

config.tx_extbase {
    dataProcessing {
        1558428437 = BK2K\BootstrapPackage\DataProcessing\ConstantsProcessor
        1558428437 {
            as = myconstants
            key = settings.constants
        }
    }

非常感谢!

【问题讨论】:

    标签: typo3 typoscript extbase typo3-9.x


    【解决方案1】:

    不,这是不可能的,因为数据处理器是 FLUIDTEMPLATE content object 单独的一个功能。

    在这种情况下,您可以在控制器操作中手动调用ConstantsProcessor。您可以通过$this->configurationManager->getContentObject() 获取当前的ContentObjectRenderer$processorConfiguration 与 TypoScript 中的相同,但作为数组:

    $constantsProcessor = GeneralUtility::makeInstance(ConstantsProcessor::class);
    $data = $constantsProcessor->process(
        $this->configurationManager->getContentObject(),
        [],
        [
            'key' => 'settings.constants',
            'as' => 'myconstants',
        ],
        []
    );
    
    // Use $data['myconstants']
    

    【讨论】:

    • 配置在我看来是错误的,出于某种原因,您总是必须添加“dataProcessing”。 => [] 配置数组中的级别。
    • 不确定你的意思。不需要这种嵌套,因为处理器直接使用给定的“key”和“as”。见github.com/benjaminkott/bootstrap_package/blob/11.0.2/Classes/…
    • 我的错,我倾向于使用需要额外级别的 ContentDataProcessor.php。直接使用处理器时当然不是这样。
    【解决方案2】:

    目前不可能。

    这绝对是一个让集成商的生活变得更加轻松的功能。

    【讨论】:

    • 我不知道任何现有问题、概念证明或其他任何内容。一些扩展,如 EXT:news 试图通过自定义信号来规避这一点,以允许修改变量。
    猜你喜欢
    • 2020-01-24
    • 2016-11-29
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多