如何将 DataProcessors 与 TYPO3 插件一起使用

Jon*_*nas 2 typo3 typoscript extbase typo3-9.x

通常会显示将数据处理器添加到 PAGE 或 FLUIDTEMPLATE 的方法。如何将其分配给 TYPO3 插件?

对于 PAGE,你可以这样做:

page {
    10 {
        dataProcessing {
            1558428437 = BK2K\BootstrapPackage\DataProcessing\ConstantsProcessor
            1558428437 {
                as = myconstants
                key = settings.constants
            }
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

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

config.tx_extbase {
    dataProcessing {
        1558428437 = BK2K\BootstrapPackage\DataProcessing\ConstantsProcessor
        1558428437 {
            as = myconstants
            key = settings.constants
        }
    }
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Mat*_*ala 6

不,这是不可能的,因为数据处理器只是FLUIDTEMPLATE内容对象的一个​​特征。

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

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

// Use $data['myconstants']
Run Code Online (Sandbox Code Playgroud)