diff --git a/core/lib/Drupal/Core/Config/StorableConfigBase.php b/core/lib/Drupal/Core/Config/StorableConfigBase.php index a6c3287..6f20055 100644 --- a/core/lib/Drupal/Core/Config/StorableConfigBase.php +++ b/core/lib/Drupal/Core/Config/StorableConfigBase.php @@ -8,6 +8,7 @@ namespace Drupal\Core\Config; use Drupal\Core\Config\Schema\Ignore; +use Drupal\Core\Config\Schema\Mapping; use Drupal\Core\TypedData\PrimitiveInterface; use Drupal\Core\TypedData\Type\FloatInterface; use Drupal\Core\TypedData\Type\IntegerInterface; @@ -215,6 +216,11 @@ protected function castValue($key, $value) { foreach ($value as $nested_value_key => $nested_value) { $value[$nested_value_key] = $this->castValue($key . '.' . $nested_value_key, $nested_value); } + if ($element instanceof Mapping && isset($element->getDataDefinition()['mapping'])) { + $mapping = $element->getDataDefinition()['mapping']; + $filled_keys = array_intersect_key($mapping, $value); + $value = array_merge($filled_keys, array_intersect_key($value, $filled_keys)); + } } return $value; }