To pass an array using TYPO3 Flexform XML and itemsProcConfig, first, define the form field for the array in the Flexform XML file. For example, to define a dropdown list field for an array of colors, use the following code:
<settings.colors>
<TCEforms>
<label>Colors:</label>
<config>
<type>select</type>
<itemsProcConfig>
<userFunc>Vendor\Extension\Hooks\FlexFormHooks->processColorList</userFunc>
</itemsProcConfig>
</config>
</TCEforms>
</settings.colors>
Then, create a PHP class and method to handle the processing of the array items. This class and method should convert the array into a format that can be used in the dropdown list. Here is an example:
<?php
namespace Vendor\Extension\Hooks;
class FlexFormHooks
{
public function processColorList(&$config)
{
$colorArray = [
'red' => 'Red',
'blue' => 'Blue',
'green' => 'Green'
];
foreach ($colorArray as $value => $label) {
$config[] = [$label, $value];
}
}
}
This method takes the form field configuration and sets it to the array items by looping through the array and adding the values and labels to the $config array.
Finally, in the TYPO3 extension, register the FlexForm Hooks class and method:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['formDataGroup']['tcaDatabaseRecord'][\Vendor\Extension\Domain\Model\MyModel::class]['before'][\Vendor\Extension\Hooks\FlexFormHooks::class] = [
'processFlexFormData',
];
With this, the FlexForm will be able to pass an array using itemsProcConfig.
Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss
Asked: 2022-12-31 11:00:00 +0000
Seen: 13 times
Last updated: Oct 11 '21