$fieldConfig) { // Placeholders are only valid for input-like and text-like fields. if (!isset($fieldConfig['config']['placeholder'], $fieldConfig['config']['type']) || ( $fieldConfig['config']['type'] !== 'input' && $fieldConfig['config']['type'] !== 'text' && $fieldConfig['config']['type'] !== 'number' && $fieldConfig['config']['type'] !== 'email' && $fieldConfig['config']['type'] !== 'link' && $fieldConfig['config']['type'] !== 'password' && $fieldConfig['config']['type'] !== 'datetime' && $fieldConfig['config']['type'] !== 'color' && $fieldConfig['config']['type'] !== 'json' ) ) { continue; } // Process __row|field type placeholders if (str_starts_with($fieldConfig['config']['placeholder'], '__row|')) { // split field names into array and remove the __row indicator $fieldNameArray = array_slice( GeneralUtility::trimExplode('|', $fieldConfig['config']['placeholder'], true), 1 ); // only the first field is required to be processed as it's the one referring to // the current record. All other columns will be resolved in a later pass through // the related records. if (!empty($fieldNameArray[0])) { $result['columnsToProcess'][] = $fieldNameArray[0]; } } } return $result; } }