Project

General

Profile

Bug #85531

Updated by Mathias Brodala over 6 years ago

When editing a translated record which contains a @group@ field whose @l10n_display@ is configured as @defaultAsReadonly@ an exception occurs in TYPO3v8: 

 <pre> 
 #1476107295: PHP Warning: Invalid argument supplied for foreach() in /.../typo3/sysext/backend/Classes/Form/Element/GroupElement.php line 158 (More information) 

 TYPO3\CMS\Core\Error\Exception thrown in file 
 /.../typo3/sysext/core/Classes/Error/ErrorHandler.php in line 107. 

 17 TYPO3\CMS\Core\Error\ErrorHandler::handleError(2, "Invalid argument supplied for foreach()", "/.../typo3/sysext/backend/Classes/Form/Element/GroupElement.php", 158, array) 

 /.../typo3/sysext/backend/Classes/Form/Element/GroupElement.php: 
 00156:               } 
 00157:           } elseif ($internalType === 'db') { 
 00158:               foreach ($selectedItems as $selectedItem) { 
 00159:                   $tableWithUid = $selectedItem['table'] . '_' . $selectedItem['uid']; 
 00160:                   $listOfSelectedValues[] = $tableWithUid; 
 </pre> 

 This fails even earlier on the latest master (thus upcoming v9): 

 <pre> 
 #1476107295: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /.../typo3/sysext/backend/Classes/Form/Element/GroupElement.php line 120 (More information) 

 TYPO3\CMS\Core\Error\Exception thrown in file 
 /.../typo3/sysext/core/Classes/Error/ErrorHandler.php in line 115. 

 38 TYPO3\CMS\Core\Error\ErrorHandler::handleError(2, "count(): Parameter must be an array or an object that implements Countable", "/.../typo3/sysext/backend/Classes/Form/Element/GroupElement.php", 120, array) 
 37 count("1") 

 /.../typo3/sysext/backend/Classes/Form/Element/GroupElement.php: 
 00118:  
 00119:           $selectedItems = $parameterArray['itemFormElValue']; 
 00120:           $selectedItemsCount = count($selectedItems); 
 00121:  
 00122:           $maxItems = $config['maxitems']; 
 </pre> 

 The code here expects an array but gets an integer (number of related records) instead. 

 This is triggered by the @SingleFieldContainer@ which replaces the @databaseRow@ value prepared by @TcaGroup@ with the raw value from @defaultLanguageRow@ in case @l10n_display@ is set to @defaultAsReadonly@. 

 This can be reproduced e.g. with the following steps: 

 # Add @'l10n_display' => 'defaultAsReadonly'@ to @$GLOBALS['TCA']['tt_content']['columns']['file_collections']@ 
 # Create an empty file collection on a page 
 # Add a _File links_ content element to that page and select the created file collection 
 # Translate the page and the _File links_ content element 
 # Edit the translated _File links_ content element and see the error 
 

Back