Project

General

Profile

Actions

Bug #105195

closed

Flexform configuration already resolved to array causes errors in form rendering

Added by André Buchmann about 2 months ago. Updated about 1 month ago.

Status:
Closed
Priority:
Should have
Category:
Form Framework
Target version:
-
Start date:
2024-10-04
Due date:
% Done:

100%

Estimated time:
TYPO3 Version:
13
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Error Message:

(1/1) TypeError
TYPO3\CMS\Core\Utility\GeneralUtility::xml2array(): Argument #1 ($string) must be of type string, array given, called in /var/www/html/vendor/typo3/cms-form/Classes/Controller/FormFrontendController.php on line 94

in /var/www/html/vendor/typo3/cms-core/Classes/Utility/GeneralUtility.php line 1264

     * @return array|string If the parsing had errors, a string with the error message is returned. Otherwise an array with the content.
     * @see array2xml()
     * @see xml2arrayProcess()
     */
    public static function xml2array(string $string, string $NSprefix = '', bool $reportDocTag = false): array|string
    {
        $runtimeCache = static::makeInstance(CacheManager::class)->getCache('runtime');
        $firstLevelCache = $runtimeCache->get('generalUtilityXml2Array') ?: [];
        $identifier = md5($string . $NSprefix . ($reportDocTag ? '1' : '0'));

at TYPO3\CMS\Core\Utility\GeneralUtility::xml2array(array('settings' => array('persistenceIdentifier' => '1:/form_definitions/exampleofallFields.form.yaml')))
in /var/www/html/vendor/typo3/cms-form/Classes/Controller/FormFrontendController.php line 94

     * settings. For now, only finisher settings are overridable.
     */
    protected function overrideByFlexFormSettings(array $formDefinition): array
    {
        $flexFormData = GeneralUtility::xml2array($this->request->getAttribute('currentContentObject')?->data['pi_flexform'] ?? '');
        if (!is_array($flexFormData)) {
            return $formDefinition;
        }
        if (isset($formDefinition['finishers'])) {

I think the cause is rooted in the newly introduced record resolving, as the error just came up after updating TYPO3 in my test project from 13.2 to 13.3.x. The pi_flexform field data is now already parsed to an array, but the form still expects a string here.


Files

clipboard-202410071102-r22ry.png (241 KB) clipboard-202410071102-r22ry.png xdebug screenshot Modern André Buchmann, 2024-10-07 09:02
clipboard-202410071122-e4ivi.png (237 KB) clipboard-202410071122-e4ivi.png xdebug André Buchmann, 2024-10-07 09:22
form_xml2array_test.zip (11.2 KB) form_xml2array_test.zip Test scenarios André Buchmann, 2024-10-07 09:26
Actions

Also available in: Atom PDF