diff --git a/core/modules/link/src/Normalizer/HalLinkItemNormalizer.php b/core/modules/link/src/Normalizer/HalLinkItemNormalizer.php index b4c9a8c..6e74d7b 100644 --- a/core/modules/link/src/Normalizer/HalLinkItemNormalizer.php +++ b/core/modules/link/src/Normalizer/HalLinkItemNormalizer.php @@ -98,14 +98,11 @@ public function normalize($field_item, $format = NULL, array $context = array()) */ public function denormalize($link, $class, $format = NULL, array $context = array()) { $url = parse_url($link['uri']); - if (isset($url['scheme']) && $url['scheme'] === 'entity') { - + if (isset($url['scheme']) && $url['scheme'] === 'entity' && isset($link['target_uuid'])) { $path = isset($url['path']) ? $url['path'] : ''; - list($target_entity_type_id, $target_entity_id) = explode('/', $path); - if (isset($link['target_uuid'])) { - if ($entity = $this->entityRepository->loadEntityByUuid($target_entity_type_id, $link['target_uuid'])) { - $link['uri'] = 'entity:' . $target_entity_type_id . '/' . $entity->id(); - } + list($target_entity_type_id,) = explode('/', $path); + if ($entity = $this->entityRepository->loadEntityByUuid($target_entity_type_id, $link['target_uuid'])) { + $link['uri'] = 'entity:' . $target_entity_type_id . '/' . $entity->id(); } } $field_item = parent::denormalize($link, $class, $format, $context); diff --git a/core/modules/menu_link_content/src/Normalizer/HalMenuLinkContentNormalizer.php b/core/modules/menu_link_content/src/Normalizer/HalMenuLinkContentNormalizer.php index ed66761..7cd147c 100644 --- a/core/modules/menu_link_content/src/Normalizer/HalMenuLinkContentNormalizer.php +++ b/core/modules/menu_link_content/src/Normalizer/HalMenuLinkContentNormalizer.php @@ -20,7 +20,7 @@ class HalMenuLinkContentNormalizer extends ContentEntityNormalizer { * * @var string */ - const PSUEDO_PARENT_FIELD_NAME = 'menu_link_content_parent_entity'; + const PSEUDO_PARENT_FIELD_NAME = 'menu_link_content_parent_entity'; /** * {@inheritdoc} @@ -40,7 +40,7 @@ public function normalize($entity, $format = NULL, array $context = array()) { list($plugin_id, $parent_uuid) = explode(PluginBase::DERIVATIVE_SEPARATOR, $parent['value']); if ($plugin_id === 'menu_link_content' && $parent_entity = $this->entityManager->loadEntityByUuid('menu_link_content', $parent_uuid)) { // This entity has a parent menu link entity, we embed it. - $normalized = NestedArray::mergeDeep($normalized, $this->embedTargetEntity($entity, $parent_entity, self::PSUEDO_PARENT_FIELD_NAME, $this->serializer, $this->linkManager, $format, $context)); + $normalized = NestedArray::mergeDeep($normalized, $this->embedTargetEntity($entity, $parent_entity, self::PSEUDO_PARENT_FIELD_NAME, $this->serializer, $this->linkManager, $format, $context)); } } } diff --git a/core/modules/menu_link_content/src/Normalizer/MenuLinkContentNormalizer.php b/core/modules/menu_link_content/src/Normalizer/MenuLinkContentNormalizer.php index 362d1ac..8efdcdc 100644 --- a/core/modules/menu_link_content/src/Normalizer/MenuLinkContentNormalizer.php +++ b/core/modules/menu_link_content/src/Normalizer/MenuLinkContentNormalizer.php @@ -19,18 +19,16 @@ class MenuLinkContentNormalizer extends ContentEntityNormalizer { * {@inheritdoc} */ public function denormalize($data, $class, $format = NULL, array $context = array()) { - if (isset($data['link']) && is_array($data['link'])) { + if (isset($data['link']) && is_array($data['link']) && isset($link['target_uuid'])) { foreach ($data['link'] as $key => $link) { $url = parse_url($link['uri']); if (!isset($url['scheme']) || $url['scheme'] !== 'entity') { continue; } $path = isset($url['path']) ? $url['path'] : ''; - list($target_entity_type_id, $target_entity_id) = explode('/', $path); - if (isset($link['target_uuid'])) { - if ($entity = $this->entityManager->loadEntityByUuid($target_entity_type_id, $link['target_uuid'])) { - $data['link'][$key]['uri'] = 'entity:' . $target_entity_type_id . '/' . $entity->id(); - } + list($target_entity_type_id,) = explode('/', $path); + if ($entity = $this->entityManager->loadEntityByUuid($target_entity_type_id, $link['target_uuid'])) { + $data['link'][$key]['uri'] = 'entity:' . $target_entity_type_id . '/' . $entity->id(); } } } diff --git a/core/modules/menu_link_content/tests/src/Kernel/Normalizer/HalMenuLinkContentNormalizerTest.php b/core/modules/menu_link_content/tests/src/Kernel/Normalizer/HalMenuLinkContentNormalizerTest.php index af00035..0669b7a 100644 --- a/core/modules/menu_link_content/tests/src/Kernel/Normalizer/HalMenuLinkContentNormalizerTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/Normalizer/HalMenuLinkContentNormalizerTest.php @@ -74,7 +74,7 @@ public function testMenuLinkNormalizer() { $serializer = $this->container->get('serializer'); $link_manager = $this->container->get('rest.link_manager'); $mock_field_uri = $link_manager->getRelationUri('menu_link_content', 'menu_link_content', 'link_target', []); - $parent_field_uri = $link_manager->getRelationUri('menu_link_content', 'menu_link_content', HalMenuLinkContentNormalizer::PSUEDO_PARENT_FIELD_NAME, []); + $parent_field_uri = $link_manager->getRelationUri('menu_link_content', 'menu_link_content', HalMenuLinkContentNormalizer::PSEUDO_PARENT_FIELD_NAME, []); $node_url = $node->toUrl('canonical', ['absolute' => TRUE])->setRouteParameter('_format', 'hal_json')->toString(); $parent_url = $parent->toUrl('canonical', ['absolute' => TRUE])->setRouteParameter('_format', 'hal_json')->toString(); $context['included_fields'] = ['uuid'];