You are here

protected function ContentEntityNormalizer::getTypedDataIds in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/hal/src/Normalizer/ContentEntityNormalizer.php \Drupal\hal\Normalizer\ContentEntityNormalizer::getTypedDataIds()

Gets the typed data IDs for a type URI.

Parameters

array $types: The type array(s) (value of the 'type' attribute of the incoming data).

array $context: Context from the normalizer/serializer operation.

Return value

array The typed data IDs.

1 call to ContentEntityNormalizer::getTypedDataIds()
ContentEntityNormalizer::denormalize in core/modules/hal/src/Normalizer/ContentEntityNormalizer.php
Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize().

File

core/modules/hal/src/Normalizer/ContentEntityNormalizer.php, line 237

Class

ContentEntityNormalizer
Converts the Drupal entity object structure to a HAL array structure.

Namespace

Drupal\hal\Normalizer

Code

protected function getTypedDataIds($types, $context = []) {

  // The 'type' can potentially contain an array of type objects. By default,
  // Drupal only uses a single type in serializing, but allows for multiple
  // types when deserializing.
  if (isset($types['href'])) {
    $types = [
      $types,
    ];
  }
  if (empty($types)) {
    throw new UnexpectedValueException('No entity type(s) specified');
  }
  foreach ($types as $type) {
    if (!isset($type['href'])) {
      throw new UnexpectedValueException('Type must contain an \'href\' attribute.');
    }
    $type_uri = $type['href'];

    // Check whether the URI corresponds to a known type on this site. Break
    // once one does.
    if ($typed_data_ids = $this->linkManager
      ->getTypeInternalIds($type['href'], $context)) {
      break;
    }
  }

  // If none of the URIs correspond to an entity type on this site, no entity
  // can be created. Throw an exception.
  if (empty($typed_data_ids)) {
    throw new UnexpectedValueException(sprintf('Type %s does not correspond to an entity on this site.', $type_uri));
  }
  return $typed_data_ids;
}