Version 1
[yaffs-website] / web / core / modules / serialization / src / Normalizer / EntityReferenceFieldItemNormalizer.php
diff --git a/web/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php b/web/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php
new file mode 100644 (file)
index 0000000..4706bf4
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+namespace Drupal\serialization\Normalizer;
+
+use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem;
+
+/**
+ * Adds the file URI to embedded file entities.
+ */
+class EntityReferenceFieldItemNormalizer extends ComplexDataNormalizer {
+
+  /**
+   * The interface or class that this Normalizer supports.
+   *
+   * @var string
+   */
+  protected $supportedInterfaceOrClass = EntityReferenceItem::class;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function normalize($field_item, $format = NULL, array $context = []) {
+    $values = parent::normalize($field_item, $format, $context);
+
+    /** @var \Drupal\Core\Entity\EntityInterface $entity */
+    if ($entity = $field_item->get('entity')->getValue()) {
+      $values['target_type'] = $entity->getEntityTypeId();
+      // Add the target entity UUID to the normalized output values.
+      $values['target_uuid'] = $entity->uuid();
+
+      // Add a 'url' value if there is a reference and a canonical URL. Hard
+      // code 'canonical' here as config entities override the default $rel
+      // parameter value to 'edit-form.
+      if ($url = $entity->url('canonical')) {
+        $values['url'] = $url;
+      }
+    }
+
+    return $values;
+  }
+
+}