* .... * * * fixed flexform data for extbase controller * * * @api */ class FlexFormViewHelper extends AbstractViewHelper { /** * @var boolean */ protected $escapeOutput = false; public function initializeArguments(): void { parent::initializeArguments(); $this->registerArgument('data', 'array', 'Array to get flex form data from', true); $this->registerArgument('fieldName', 'string', 'Field name', false, 'pi_flexform'); $this->registerArgument('as', 'string', 'Name of the variable to assign', false, 'flexFormData'); } public function render(): string { $data = []; if (is_array($this->arguments['data'])) { if (isset($this->arguments['data'][$this->arguments['fieldName']])) { $data = is_array($this->arguments['data'][$this->arguments['fieldName']]) ? $this->arguments['data'][$this->arguments['fieldName']] : GeneralUtility::xml2array($this->arguments['data'][$this->arguments['fieldName']]); $data = $data['data'] ?? $data; } } $templateVariableContainer = $this->renderingContext->getVariableProvider(); $templateVariableContainer->add($this->arguments['as'], $data); $content = $this->renderChildren(); $templateVariableContainer->remove($this->arguments['as']); return $content; } }