Bug #92483
Updated by Simon Schaufelberger over 2 years ago
The following-column-example will produce the error `Data Structure ERROR: No [\'ROOT\'][\'el\'] element found in flex form definition.';`. because the file is not resolved. <pre> @ 'tx_timer_timer' => [ 'exclude' => true, 'label' => 'LLL:EXT:timer/Resources/Private/Language/locallang_db.xlf:tx_timer_general.field.tx_timer_timer', 'config' => [ 'type' => 'flex', 'ds_pointerField' => 'tx_timer_selector', 'ds' => [ 'default' => 'EXT:timer/Configuration/FlexForms/TimerDef/Default.xml', 'porthDaily' => 'EXT:timer/Configuration/FlexForms/TimerDef/DailyTimer.xml', 'porthYearly' => 'EXT:timer/Configuration/FlexForms/TimerDef/YearlyTimer.xml' ], ], ], </pre> @ In the comment of `parseDataStructureByIdentifier` in TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools is written: <pre> @ * After the data structure definition is found, the method resolves: * * FILE:EXT: prefix of the data structure itself - the ds is in a file * * FILE:EXT: prefix for sheets - if single sheets are in files * * EXT: prefix for sheets - if single sheets are in files (slightly different b/w compat syntax) * * Create an sDEF sheet if the data structure has non, yet. </pre> @ But the method fulfill fullfill it not. Extend in the middle methe middl of the method the code, to fix the problem. <pre> @ // Resolve FILE: prefix pointing to a DS in a file if (strpos(trim($dataStructure), 'FILE:') === 0) { $file = GeneralUtility::getFileAbsFileName(substr(trim($dataStructure), 5)); if (empty($file) || !@is_file($file)) { throw new \RuntimeException( 'Data structure file ' . $file . ' could not be resolved to an existing file', 1478105826 ); } $dataStructure = file_get_contents($file); // } beginn of additional code in Line 692 } else if (strpos(trim($dataStructure), 'EXT:') === 0) { $file = GeneralUtility::getFileAbsFileName(substr(trim($dataStructure), 0)); if (empty($file) || !@is_file($file)) { throw new \RuntimeException( 'Data structure file ' . $file . ' could not be resolved to an existing file', 1478105826 ); } $dataStructure = file_get_contents($file); } // End of additional code </pre> @