diff --git a/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php b/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php index 6779542..3d1e33e 100644 --- a/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php +++ b/core/lib/Drupal/Core/Field/EntityReferenceFieldItemList.php @@ -117,15 +117,4 @@ public function defaultValuesFormSubmit(array $element, array &$form, FormStateI return $default_value; } - /** - * {@inheritdoc} - */ - public function getConstraints() { - $constraints = parent::getConstraints(); - $constraints[] = \Drupal::typedDataManager() - ->getValidationConstraintManager() - ->create('EntityReferenceNotNull', []); - return $constraints; - } - } diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php index f456400..3b8cc0e 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php @@ -33,7 +33,7 @@ * no_ui = TRUE, * default_formatter = "entity_reference_label", * list_class = "\Drupal\Core\Field\EntityReferenceFieldItemList", - * constraints = {"ValidReference" = {}} + * constraints = {"ValidReference" = {}, "EntityReferenceNotNull" = {}} * ) */ class EntityReferenceItem extends FieldItemBase { diff --git a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityReferenceNotNullConstraintValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityReferenceNotNullConstraintValidator.php index c88f549..e30a161 100644 --- a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityReferenceNotNullConstraintValidator.php +++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EntityReferenceNotNullConstraintValidator.php @@ -21,15 +21,10 @@ class EntityReferenceNotNullConstraintValidator extends NotNullValidator { /** * {@inheritdoc} */ - public function validate($value, Constraint $constraint) { - foreach ($value as $item) { - if ($item->isEmpty()) { - continue; - } - if ($item->target_id === NULL && !$item->entity->isNew()) { - $this->context->addViolation($constraint->message); - return; - } + public function validate($item, Constraint $constraint) { + if (!$item->isEmpty && $item->target_id === NULL && !$item->entity->isNew()) { + $this->context->addViolation($constraint->message); + return; } } diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceItemTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceItemTest.php index dbc9037..728a161 100644 --- a/core/modules/field/src/Tests/EntityReference/EntityReferenceItemTest.php +++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceItemTest.php @@ -340,7 +340,7 @@ public function testValidation() { $errors = $entity->validate(); $this->assertEqual(1, count($errors)); $this->assertEqual($errors[0]->getMessage(), 'This value should not be null.'); - $this->assertEqual($errors[0]->getPropertyPath(), 'field_test_taxonomy_term'); + $this->assertEqual($errors[0]->getPropertyPath(), 'field_test_taxonomy_term.0'); // This should rectify the issue, favoring the entity over the target_id. $entity->save(); $errors = $entity->validate();