Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / serialization / src / Normalizer / EntityReferenceFieldItemNormalizer.php
index ea2e020bf00f558513e9cff01201db4b55f1cc31..4865c909795f12efe5eb6c9d708891ad8721fd73 100644 (file)
@@ -12,6 +12,8 @@ use Symfony\Component\Serializer\Exception\UnexpectedValueException;
  */
 class EntityReferenceFieldItemNormalizer extends FieldItemNormalizer {
 
+  use EntityReferenceFieldItemNormalizerTrait;
+
   /**
    * The interface or class that this Normalizer supports.
    *
@@ -42,6 +44,8 @@ class EntityReferenceFieldItemNormalizer extends FieldItemNormalizer {
   public function normalize($field_item, $format = NULL, array $context = []) {
     $values = parent::normalize($field_item, $format, $context);
 
+    $this->normalizeRootReferenceValue($values, $field_item);
+
     /** @var \Drupal\Core\Entity\EntityInterface $entity */
     if ($entity = $field_item->get('entity')->getValue()) {
       $values['target_type'] = $entity->getEntityTypeId();
@@ -55,6 +59,7 @@ class EntityReferenceFieldItemNormalizer extends FieldItemNormalizer {
         $values['url'] = $url;
       }
     }
+
     return $values;
   }
 
@@ -73,7 +78,7 @@ class EntityReferenceFieldItemNormalizer extends FieldItemNormalizer {
         throw new UnexpectedValueException(sprintf('The field "%s" property "target_type" must be set to "%s" or omitted.', $field_item->getFieldDefinition()->getName(), $target_type));
       }
       if ($entity = $this->entityRepository->loadEntityByUuid($target_type, $data['target_uuid'])) {
-        return ['target_id' => $entity->id()];
+        return ['target_id' => $entity->id()] + array_intersect_key($data, $field_item->getProperties());
       }
       else {
         // Unable to load entity by uuid.