diff --git a/core/lib/Drupal/Core/Field/PluginSettingsBase.php b/core/lib/Drupal/Core/Field/PluginSettingsBase.php index e69393a..05484f8 100644 --- a/core/lib/Drupal/Core/Field/PluginSettingsBase.php +++ b/core/lib/Drupal/Core/Field/PluginSettingsBase.php @@ -52,8 +52,8 @@ public function getSettings() { * {@inheritdoc} */ public function getSetting($key) { - // Merge defaults if we have no value for the key. - if (!$this->defaultSettingsMerged && !array_key_exists($key, $this->settings)) { + // Merge defaults if that has not been done before. + if (!$this->defaultSettingsMerged) { $this->mergeDefaults(); } return isset($this->settings[$key]) ? $this->settings[$key] : NULL; @@ -63,7 +63,8 @@ public function getSetting($key) { * Merges default settings values into $settings. */ protected function mergeDefaults() { - $this->settings += static::settings(); + // Use only settings defined by plugin. + $this->settings = array_intersect_key($this->settings, static::settings()) + static::settings(); $this->defaultSettingsMerged = TRUE; }