diff --git a/core/modules/hal/hal.services.yml b/core/modules/hal/hal.services.yml index 7f3e405..cda7e84 100644 --- a/core/modules/hal/hal.services.yml +++ b/core/modules/hal/hal.services.yml @@ -1,4 +1,10 @@ services: + serializer.normalizer.file_field_item.hal: + class: Drupal\hal\Normalizer\FileFieldItemNormalizer + tags: + - { name: normalizer, priority: 10 } + calls: + - [setLinkManager, ['@rest.link_manager']] serializer.normalizer.entity_reference_item.hal: class: Drupal\hal\Normalizer\EntityReferenceItemNormalizer tags: diff --git a/core/modules/hal/lib/Drupal/hal/Normalizer/FileFieldItemNormalizer.php b/core/modules/hal/lib/Drupal/hal/Normalizer/FileFieldItemNormalizer.php new file mode 100644 index 0000000..e663a91 --- /dev/null +++ b/core/modules/hal/lib/Drupal/hal/Normalizer/FileFieldItemNormalizer.php @@ -0,0 +1,57 @@ +get('entity')->getValue(); + $content = file_create_url($entity->getFileUri()); + $uri_info = $entity->uri(); + $uri = url($uri_info['path'], array('absolute' => TRUE)); + + $values = $field_item->getPropertyValues(); + if (isset($context['langcode'])) { + $values['lang'] = $context['langcode']; + } + $values['uri'] = $uri; + $values['content'] = $content; + return $values; + } + + /** + * Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize() + */ + public function denormalize($data, $class, $format = NULL, array $context = array()) { + } + +}