[BUGFIX] FormEngine: Fix keepItems, addItems and removeItems handling
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Classes / Form / FormDataProvider / AbstractItemProvider.php
index 224b460..221c8a9 100644 (file)
@@ -472,12 +472,18 @@ abstract class AbstractItemProvider
     protected function removeItemsByKeepItemsPageTsConfig(array $result, $fieldName, array $items)
     {
         $table = $result['tableName'];
-        if (empty($result['pageTsConfig']['TCEFORM.'][$table . '.'][$fieldName . '.']['keepItems'])
+        if (!isset($result['pageTsConfig']['TCEFORM.'][$table . '.'][$fieldName . '.']['keepItems'])
             || !is_string($result['pageTsConfig']['TCEFORM.'][$table . '.'][$fieldName . '.']['keepItems'])
         ) {
             return $items;
         }
 
+        // If keepItems is set but is an empty list all current items get removed
+        if (empty($result['pageTsConfig']['TCEFORM.'][$table . '.'][$fieldName . '.']['keepItems'])
+            && $result['pageTsConfig']['TCEFORM.'][$table . '.'][$fieldName . '.']['keepItems'] !== '0') {
+            return [];
+        }
+
         return ArrayUtility::keepItemsInArray(
             $items,
             $result['pageTsConfig']['TCEFORM.'][$table . '.'][$fieldName . '.']['keepItems'],