Issue #2060003 by claudiu.cristea, yched: Fixed Wrong precedence in Field::getFieldSetting[s]() when setting appears in both field and instance.
parent
66178e047a
commit
772849f021
|
@ -581,7 +581,7 @@ class Field extends ConfigEntityBase implements FieldInterface {
|
||||||
// the default field and instance settings, within $this.
|
// the default field and instance settings, within $this.
|
||||||
$field_type_info = \Drupal::service('plugin.manager.entity.field.field_type')->getDefinition($this->type);
|
$field_type_info = \Drupal::service('plugin.manager.entity.field.field_type')->getDefinition($this->type);
|
||||||
|
|
||||||
$settings = $field_type_info['instance_settings'] + $this->settings + $field_type_info['settings'];
|
$settings = $this->settings + $field_type_info['settings'] + $field_type_info['instance_settings'];
|
||||||
return $settings;
|
return $settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -594,15 +594,15 @@ class Field extends ConfigEntityBase implements FieldInterface {
|
||||||
|
|
||||||
// We assume here that consecutive array_key_exists() is more efficient than
|
// We assume here that consecutive array_key_exists() is more efficient than
|
||||||
// calling getFieldSettings() when all we need is a single setting.
|
// calling getFieldSettings() when all we need is a single setting.
|
||||||
if (array_key_exists($setting_name, $field_type_info['instance_settings'])) {
|
if (array_key_exists($setting_name, $this->settings)) {
|
||||||
return $field_type_info['instance_settings'][$setting_name];
|
|
||||||
}
|
|
||||||
elseif (array_key_exists($setting_name, $this->settings)) {
|
|
||||||
return $this->settings[$setting_name];
|
return $this->settings[$setting_name];
|
||||||
}
|
}
|
||||||
else {
|
elseif (array_key_exists($setting_name, $field_type_info['settings'])) {
|
||||||
return $field_type_info['settings'][$setting_name];
|
return $field_type_info['settings'][$setting_name];
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return $field_type_info['instance_settings'][$setting_name];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -30,7 +30,7 @@ class ImageFieldDefaultImagesTest extends ImageFieldTestBase {
|
||||||
/**
|
/**
|
||||||
* Tests CRUD for fields and fields instances with default images.
|
* Tests CRUD for fields and fields instances with default images.
|
||||||
*/
|
*/
|
||||||
function testDefaultImages() {
|
public function testDefaultImages() {
|
||||||
// Create files to use as the default images.
|
// Create files to use as the default images.
|
||||||
$files = $this->drupalGetTestFiles('image');
|
$files = $this->drupalGetTestFiles('image');
|
||||||
$default_images = array();
|
$default_images = array();
|
||||||
|
@ -52,7 +52,22 @@ class ImageFieldDefaultImagesTest extends ImageFieldTestBase {
|
||||||
'preview_image_style' => 'medium',
|
'preview_image_style' => 'medium',
|
||||||
);
|
);
|
||||||
$instance = $this->createImageField($field_name, 'article', $field_settings, $instance_settings, $widget_settings);
|
$instance = $this->createImageField($field_name, 'article', $field_settings, $instance_settings, $widget_settings);
|
||||||
$field = field_info_field($field_name);
|
|
||||||
|
// The instance default image id should be 2.
|
||||||
|
$this->assertEqual($instance->getFieldSetting('default_image'), $default_images['instance']->id());
|
||||||
|
|
||||||
|
// Also test \Drupal\field\Plugin\Core\Entity\FieldInstance::getFieldSetting().
|
||||||
|
$instance_field_settings = $instance->getFieldSettings();
|
||||||
|
$this->assertEqual($instance_field_settings['default_image'], $default_images['instance']->id());
|
||||||
|
|
||||||
|
$field = entity_load('field_entity', $field_name);
|
||||||
|
|
||||||
|
// The field default image id should be 1.
|
||||||
|
$this->assertEqual($field->getFieldSetting('default_image'), $default_images['field']->id());
|
||||||
|
|
||||||
|
// Also test \Drupal\field\Plugin\Core\Entity\Field::getFieldSettings().
|
||||||
|
$field_field_settings = $field->getFieldSettings();
|
||||||
|
$this->assertEqual($field_field_settings['default_image'], $default_images['field']->id());
|
||||||
|
|
||||||
// Add another instance with another default image to the page content type.
|
// Add another instance with another default image to the page content type.
|
||||||
$instance2 = entity_create('field_instance', array(
|
$instance2 = entity_create('field_instance', array(
|
||||||
|
|
Loading…
Reference in New Issue