diff --git a/core/lib/Drupal/Core/Entity/Field/FieldDefinition.php b/core/lib/Drupal/Core/Entity/Field/FieldDefinition.php index 0c40c42..03955a2 100644 --- a/core/lib/Drupal/Core/Entity/Field/FieldDefinition.php +++ b/core/lib/Drupal/Core/Entity/Field/FieldDefinition.php @@ -283,20 +283,17 @@ public static function createFromOldStyleDefinition(array $definition) { $field_definition->setClass($type_definition['list_class']); } } - - // Take care of the item definition now. 'required' applies to the list - // definition. - unset($definition['required']); - $item_definition = new DataDefinition($definition); - if (isset($definition['settings'])) { - $item_definition->setSettings($definition['settings']); - } - if (isset($definition['constraints'])) { - $item_definition->setConstraints($definition['constraints']); - } - if (isset($definition['translatable']) && $definition['translatable']) { + if (isset($definition['translatable'])) { $field_definition->setTranslatable($definition['translatable']); + unset($definition['translatable']); } + if (isset($definition['required'])) { + $field_definition->setRequired($definition['required']); + unset($definition['required']); + } + + // Take care of the item definition now. + $item_definition = new DataDefinition($definition); $field_definition->setItemDefinition($item_definition); return $field_definition; } diff --git a/core/lib/Drupal/Core/TypedData/DataDefinition.php b/core/lib/Drupal/Core/TypedData/DataDefinition.php index 7bf7ea8..1d96693 100644 --- a/core/lib/Drupal/Core/TypedData/DataDefinition.php +++ b/core/lib/Drupal/Core/TypedData/DataDefinition.php @@ -169,7 +169,7 @@ public function isRequired() { * @param bool $required * Whether the data is required. * - * @return \Drupal\Core\TypedData\DataDefinition + * @return \Drupal\Core\TypedData\DataDefinitionInterface * The object itself for chaining. */ public function setRequired($required) { @@ -190,7 +190,7 @@ public function getClass() { * @param string|null $class * The class to use. * - * @return \Drupal\Core\TypedData\DataDefinition + * @return \Drupal\Core\TypedData\DataDefinitionInterface * The object itself for chaining. */ public function setClass($class) { @@ -216,7 +216,7 @@ public function getSettings() { * @param array $settings * The array of settings. * - * @return \Drupal\Core\TypedData\DataDefinition + * @return \Drupal\Core\TypedData\DataDefinitionInterface * The object itself for chaining. */ public function setSettings(array $settings) { @@ -245,7 +245,7 @@ public function getConstraints() { * @param array $constraints * The array of constraints. * - * @return \Drupal\Core\TypedData\DataDefinition + * @return \Drupal\Core\TypedData\DataDefinitionInterface * The object itself for chaining. */ public function setConstraints(array $constraints) { @@ -316,7 +316,7 @@ public function toArray() { /** * Allows creating data definition objects from old style definition arrays. * - * @todo: Remove once no old-style definition arrays need to be supported. + * @todo: Remove once https://drupal.org/node/2112239 is in. */ public static function createFromOldStyleDefinition(array $definition) { if (empty($definition['list'])) { @@ -345,17 +345,14 @@ public static function createFromOldStyleDefinition(array $definition) { $list_definition->setClass($type_definition['list_class']); } } + if (isset($definition['required'])) { + $$list_definition->setRequired($definition['required']); + unset($definition['required']); + } - // Take care of the item definition now. 'required' applies to the list - // definition. + // Take care of the item definition now. unset($definition['required']); $item_definition = new DataDefinition($definition); - if (isset($definition['settings'])) { - $item_definition->setSettings($definition['settings']); - } - if (isset($definition['constraints'])) { - $item_definition->setConstraints($definition['constraints']); - } $list_definition->setItemDefinition($item_definition); return $list_definition; } diff --git a/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php index 0cb1e8e..7e30812 100644 --- a/core/lib/Drupal/Core/TypedData/TypedDataManager.php +++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php @@ -78,7 +78,7 @@ public function createInstance($data_type, array $configuration) { } // Allow per-data definition overrides of the used classes, i.e. take over - // classes specified in the data definition. + // classes specified in the type definition. $class = $data_definition->getClass(); $class = isset($class) ? $class : $type_definition['class']; @@ -121,6 +121,7 @@ public function createInstance($data_type, array $configuration) { * @see \Drupal\Core\TypedData\Plugin\DataType\Binary */ public function create($definition, $value = NULL, $name = NULL, $parent = NULL) { + // @todo: Remove array support once https://drupal.org/node/2112239 is in. if (is_array($definition)) { $definition = DataDefinition::createFromOldStyleDefinition($definition); }