function ContentEntityNormalizer::getTypedDataIds

Same name and namespace in other branches
  1. 9 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 252

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;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.