From f56a7bc7eaf10f9118b116128b93a24ab623981e Mon Sep 17 00:00:00 2001 From: David Mellen Date: Wed, 2 Oct 2024 12:21:31 +0200 Subject: [PATCH] feat: add dataProcessing to FlexFormProcessor --- Classes/DataProcessing/FlexFormProcessor.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Classes/DataProcessing/FlexFormProcessor.php b/Classes/DataProcessing/FlexFormProcessor.php index 371683c..a471282 100644 --- a/Classes/DataProcessing/FlexFormProcessor.php +++ b/Classes/DataProcessing/FlexFormProcessor.php @@ -10,6 +10,7 @@ use TYPO3\CMS\Core\Utility\ArrayUtility; use TYPO3\CMS\Core\Utility\Exception\MissingArrayPathException; use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Frontend\ContentObject\ContentDataProcessor; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface; @@ -22,6 +23,13 @@ class FlexFormProcessor implements DataProcessorInterface */ protected array $processorConf; + protected ?ContentDataProcessor $contentDataProcessor = null; + + public function __construct() + { + $this->contentDataProcessor = GeneralUtility::makeInstance(ContentDataProcessor::class); + } + /** * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter * @param mixed[] $contentObjectConf @@ -34,7 +42,8 @@ public function process( array $contentObjectConf, array $processorConf, array $processedData - ): array { $this->cObj = $cObj; + ): array { + $this->cObj = $cObj; $this->processorConf = $processorConf; $flexFormTools = GeneralUtility::makeInstance(FlexFormTools::class); @@ -92,6 +101,12 @@ public function process( $flexformData = ArrayUtility::removeByPath($flexformData, $ignoredField, '.'); } + $overrideData = []; + $overrideData = $this->contentDataProcessor?->process($cObj, $processorConf, $overrideData) ?? []; + foreach ($overrideData as $key => &$value) { + $flexformData = empty($key) ? $value : ArrayUtility::setValueByPath($flexformData, $key, $value, '.'); + } + // save result in "data" (default) or given variable name $targetVariableName = $cObj->stdWrapValue('as', $processorConf);