コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public function normalize($field_item, $format = NULL, array $context = array())
 {
     /** @var $field_item \Drupal\Core\Field\FieldItemInterface */
     $target_entity = $field_item->get('entity')->getValue();
     // If this is not a content entity, let the parent implementation handle it,
     // only content entities are supported as embedded resources.
     if (!$target_entity instanceof FieldableEntityInterface) {
         return parent::normalize($field_item, $format, $context);
     }
     // If the parent entity passed in a langcode, unset it before normalizing
     // the target entity. Otherwise, untranslatable fields of the target entity
     // will include the langcode.
     $langcode = isset($context['langcode']) ? $context['langcode'] : NULL;
     unset($context['langcode']);
     $context['included_fields'] = array('uuid');
     // Normalize the target entity.
     $embedded = $this->serializer->normalize($target_entity, $format, $context);
     $link = $embedded['_links']['self'];
     // If the field is translatable, add the langcode to the link relation
     // object. This does not indicate the language of the target entity.
     if ($langcode) {
         $embedded['lang'] = $link['lang'] = $langcode;
     }
     // The returned structure will be recursively merged into the normalized
     // entity so that the items are properly added to the _links and _embedded
     // objects.
     $field_name = $field_item->getParent()->getName();
     $entity = $field_item->getEntity();
     $field_uri = $this->linkManager->getRelationUri($entity->getEntityTypeId(), $entity->bundle(), $field_name, $context);
     return array('_links' => array($field_uri => array($link)), '_embedded' => array($field_uri => array($embedded)));
 }
コード例 #2
0
 /**
  * Gets the relation URI of the field containing an item.
  *
  * The relation URI is used as a property key when building the HAL structure.
  *
  * @param FieldItemInterface $field_item
  *   The field item that is being normalized.
  *
  * @return string
  *   The relation URI of the field.
  */
 protected function getFieldRelationUri(FieldItemInterface $field_item)
 {
     $field_name = $field_item->getParent()->getName();
     $entity = $field_item->getEntity();
     return $this->linkManager->getRelationUri($entity->getEntityTypeId(), $entity->bundle(), $field_name);
 }