diff --git a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php index 9b04e9c..b127a229 100644 --- a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php +++ b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php @@ -443,6 +443,12 @@ public function setDefaultValueCallback($callback) { * @return $this */ public function setDefaultValue($value) { + if (!is_array($value)) { + $value = array(array($this->getMainPropertyName() => $value)); + } + elseif (!is_numeric(array_keys($value)[0])) { + $value = array(0 => $value); + } $this->definition['default_value'] = $value; return $this; } diff --git a/core/modules/content_translation/config/schema/content_translation.schema.yml b/core/modules/content_translation/config/schema/content_translation.schema.yml index db56a16..a4bc176 100644 --- a/core/modules/content_translation/config/schema/content_translation.schema.yml +++ b/core/modules/content_translation/config/schema/content_translation.schema.yml @@ -7,6 +7,7 @@ content_translation.settings: sequence: - type: sequence label: 'Bundle' + sequence: - type: mapping label: 'Settings' mapping: diff --git a/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php b/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php index bc88b21..ae71170 100644 --- a/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php @@ -164,6 +164,7 @@ public function testFieldDefaultValue() { $default_value = array( 'value' => $this->randomMachineName(), ); + $expected_default_value = array($default_value); $definition->setDefaultValue($default_value); $entity = $this->getMockBuilder('Drupal\Core\Entity\ContentEntityBase') ->disableOriginalConstructor() @@ -171,7 +172,23 @@ public function testFieldDefaultValue() { // Set the field item list class to be used to avoid requiring the typed // data manager to retrieve it. $definition->setClass('Drupal\Core\Field\FieldItemList'); - $this->assertEquals($default_value, $definition->getDefaultValue($entity)); + $this->assertEquals($expected_default_value, $definition->getDefaultValue($entity)); + + $data_definition = $this->getMockBuilder('Drupal\Core\TypedData\DataDefinition') + ->disableOriginalConstructor() + ->getMock(); + $data_definition->expects($this->any()) + ->method('getClass') + ->will($this->returnValue('Drupal\Core\Field\FieldItemBase')); + $definition->setItemDefinition($data_definition); + + // Set default value only with a literal. + $definition->setDefaultValue($default_value['value']); + $this->assertEquals($expected_default_value, $definition->getDefaultValue($entity)); + + // Set default value with an indexed array. + $definition->setDefaultValue($expected_default_value); + $this->assertEquals($expected_default_value, $definition->getDefaultValue($entity)); } /**