diff --git a/core/modules/hal/hal.services.yml b/core/modules/hal/hal.services.yml index 97fcbfb..7a31772 100644 --- a/core/modules/hal/hal.services.yml +++ b/core/modules/hal/hal.services.yml @@ -4,6 +4,11 @@ services: arguments: ['@hal.link_manager', '@serializer.entity_resolver'] tags: - { name: normalizer, priority: 10 } + serializer.normalizer.link.hal: + class: Drupal\hal\Normalizer\LinkItemNormalizer + arguments: ['@entity.manager'] + tags: + - { name: normalizer, priority: 20 } serializer.normalizer.field_item.hal: class: Drupal\hal\Normalizer\FieldItemNormalizer tags: diff --git a/core/modules/hal/src/Normalizer/LinkItemNormalizer.php b/core/modules/hal/src/Normalizer/LinkItemNormalizer.php new file mode 100644 index 0000000..4dff907 --- /dev/null +++ b/core/modules/hal/src/Normalizer/LinkItemNormalizer.php @@ -0,0 +1,50 @@ + $property) { + if ($property_name == 'options') { + $options_values = []; + foreach ($property->getValue() as $key => $val) { + $options_values[$key] = $this->serializer->normalize($val, $format, $context); + } + $values['options'] = $options_values; + } + else { + $values[$property_name] = $this->serializer->normalize($property, $format, $context); + } + } + if (isset($context['langcode'])) { + $values['lang'] = $context['langcode']; + } + $field = $field_item->getParent(); + return [ + $field->getName() => [$values], + ]; + } + +} diff --git a/core/modules/link/link.services.yml b/core/modules/link/link.services.yml index 4e18b0d..a9c7e07 100644 --- a/core/modules/link/link.services.yml +++ b/core/modules/link/link.services.yml @@ -1,6 +1,6 @@ services: serializer.normalizer.link: - class: Drupal\link\Normalizer\LinkItemNormalizer - tags: - - { name: normalizer , priority: 20 } - arguments: ['@entity.manager'] + class: Drupal\link\Normalizer\LinkItemNormalizer + tags: + - { name: normalizer , priority: 6 } + arguments: ['@entity.manager'] diff --git a/core/modules/link/src/Normalizer/LinkItemNormalizer.php b/core/modules/link/src/Normalizer/LinkItemNormalizer.php index ecebc83..e7971db 100644 --- a/core/modules/link/src/Normalizer/LinkItemNormalizer.php +++ b/core/modules/link/src/Normalizer/LinkItemNormalizer.php @@ -1,8 +1,8 @@ $property) { - if ($property_name == 'options') { - $options_values = []; - foreach ($property->getValue() as $key => $val) { - $options_values[$key] = $this->serializer->normalize($val, $format, $context); + public function normalize($object, $format = NULL, array $context = array()) { + $attributes = array(); + foreach ($object as $name => $field) { + if ($name == 'options') { + $options_attributes = []; + foreach ($field->getValue() as $key => $val) { + $options_attributes[$key] = $this->normalize($val, $format, $context); } - $values['options'] = $options_values; + $attributes['options'] = $options_attributes; } else { - $values[$property_name] = $this->serializer->normalize($property, $format, $context); + $attributes[$name] = $this->serializer->normalize($field, $format, $context); } } - if (isset($context['langcode'])) { - $values['lang'] = $context['langcode']; - } - $field = $field_item->getParent(); - return [ - $field->getName() => [$values], - ]; + return $attributes; } }