class FieldNormalizer
Same name in this branch
- 9 core/modules/jsonapi/src/Normalizer/FieldNormalizer.php \Drupal\jsonapi\Normalizer\FieldNormalizer
- 9 core/modules/serialization/src/Normalizer/FieldNormalizer.php \Drupal\serialization\Normalizer\FieldNormalizer
Same name in other branches
- 8.9.x core/modules/jsonapi/src/Normalizer/FieldNormalizer.php \Drupal\jsonapi\Normalizer\FieldNormalizer
- 8.9.x core/modules/serialization/src/Normalizer/FieldNormalizer.php \Drupal\serialization\Normalizer\FieldNormalizer
- 8.9.x core/modules/hal/src/Normalizer/FieldNormalizer.php \Drupal\hal\Normalizer\FieldNormalizer
- 10 core/modules/jsonapi/src/Normalizer/FieldNormalizer.php \Drupal\jsonapi\Normalizer\FieldNormalizer
- 10 core/modules/serialization/src/Normalizer/FieldNormalizer.php \Drupal\serialization\Normalizer\FieldNormalizer
- 11.x core/modules/jsonapi/src/Normalizer/FieldNormalizer.php \Drupal\jsonapi\Normalizer\FieldNormalizer
- 11.x core/modules/serialization/src/Normalizer/FieldNormalizer.php \Drupal\serialization\Normalizer\FieldNormalizer
Converts the Drupal field structure to HAL array structure.
Hierarchy
- class \Drupal\serialization\Normalizer\NormalizerBase implements \Symfony\Component\Serializer\SerializerAwareInterface, \Drupal\serialization\Normalizer\CacheableNormalizerInterface, \Symfony\Component\Serializer\Normalizer\CacheableSupportsMethodInterface uses \Symfony\Component\Serializer\SerializerAwareTrait
- class \Drupal\serialization\Normalizer\ListNormalizer extends \Drupal\serialization\Normalizer\NormalizerBase
- class \Drupal\serialization\Normalizer\FieldNormalizer extends \Drupal\serialization\Normalizer\ListNormalizer implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface
- class \Drupal\hal\Normalizer\FieldNormalizer extends \Drupal\serialization\Normalizer\FieldNormalizer
- class \Drupal\serialization\Normalizer\FieldNormalizer extends \Drupal\serialization\Normalizer\ListNormalizer implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface
- class \Drupal\serialization\Normalizer\ListNormalizer extends \Drupal\serialization\Normalizer\NormalizerBase
Expanded class hierarchy of FieldNormalizer
1 file declares its use of FieldNormalizer
- FieldNormalizerDenormalizeExceptionsTest.php in core/
modules/ hal/ tests/ src/ Unit/ FieldNormalizerDenormalizeExceptionsTest.php
1 string reference to 'FieldNormalizer'
- hal.services.yml in core/
modules/ hal/ hal.services.yml - core/modules/hal/hal.services.yml
1 service uses FieldNormalizer
- serializer.normalizer.field.hal in core/
modules/ hal/ hal.services.yml - Drupal\hal\Normalizer\FieldNormalizer
File
-
core/
modules/ hal/ src/ Normalizer/ FieldNormalizer.php, line 11
Namespace
Drupal\hal\NormalizerView source
class FieldNormalizer extends SerializationFieldNormalizer {
/**
* {@inheritdoc}
*/
protected $format = [
'hal_json',
];
/**
* {@inheritdoc}
*/
public function normalize($field_items, $format = NULL, array $context = []) {
$normalized_field_items = [];
// Get the field definition.
$entity = $field_items->getEntity();
$field_name = $field_items->getName();
$field_definition = $field_items->getFieldDefinition();
// If this field is not translatable, it can simply be normalized without
// separating it into different translations.
if (!$field_definition->isTranslatable()) {
$normalized_field_items = $this->normalizeFieldItems($field_items, $format, $context);
}
else {
foreach ($entity->getTranslationLanguages() as $language) {
$context['langcode'] = $language->getId();
$translation = $entity->getTranslation($language->getId());
$translated_field_items = $translation->get($field_name);
$normalized_field_items = array_merge($normalized_field_items, $this->normalizeFieldItems($translated_field_items, $format, $context));
}
}
// Merge deep so that links set in entity reference normalizers are merged
// into the links property.
return NestedArray::mergeDeepArray($normalized_field_items);
}
/**
* Helper function to normalize field items.
*
* @param \Drupal\Core\Field\FieldItemListInterface $field_items
* The field item list object.
* @param string $format
* The format.
* @param array $context
* The context array.
*
* @return array
* The array of normalized field items.
*/
protected function normalizeFieldItems($field_items, $format, $context) {
$normalized_field_items = [];
if (!$field_items->isEmpty()) {
foreach ($field_items as $field_item) {
$normalized_field_items[] = $this->serializer
->normalize($field_item, $format, $context);
}
}
return $normalized_field_items;
}
/**
* {@inheritdoc}
*/
public function hasCacheableSupportsMethod() : bool {
return TRUE;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY | constant | Name of key for bubbling cacheability metadata via serialization context. | |||
FieldNormalizer::$format | protected | property | List of formats which supports (de-)normalization. | Overrides NormalizerBase::$format | |
FieldNormalizer::$supportedInterfaceOrClass | protected | property | The interface or class that this Normalizer supports. | Overrides ListNormalizer::$supportedInterfaceOrClass | |
FieldNormalizer::denormalize | public | function | |||
FieldNormalizer::hasCacheableSupportsMethod | public | function | Overrides ListNormalizer::hasCacheableSupportsMethod | ||
FieldNormalizer::normalize | public | function | Overrides ListNormalizer::normalize | ||
FieldNormalizer::normalizeFieldItems | protected | function | Helper function to normalize field items. | ||
NormalizerBase::addCacheableDependency | protected | function | Adds cacheability if applicable. | ||
NormalizerBase::checkFormat | protected | function | Checks if the provided format is supported by this normalizer. | 1 | |
NormalizerBase::supportsDenormalization | public | function | Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::supportsDenormalization() | 1 | |
NormalizerBase::supportsNormalization | public | function | 1 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.