public function SchemataSchemaNormalizer::normalize in JSON:API Extras 8
Same name and namespace in other branches
- 8.3 src/Normalizer/SchemataSchemaNormalizer.php \Drupal\jsonapi_extras\Normalizer\SchemataSchemaNormalizer::normalize()
- 8.2 src/Normalizer/SchemataSchemaNormalizer.php \Drupal\jsonapi_extras\Normalizer\SchemataSchemaNormalizer::normalize()
Overrides SchemataSchemaNormalizer::normalize
File
- src/
Normalizer/ SchemataSchemaNormalizer.php, line 33
Class
- SchemataSchemaNormalizer
- Applies JSONAPI Extras attribute overrides to entity schemas.
Namespace
Drupal\jsonapi_extras\NormalizerCode
public function normalize($entity, $format = NULL, array $context = []) {
$normalized = parent::normalize($entity, $format, $context);
// Load the resource type for this entity type and bundle.
$resource_type = $this->resourceTypeRepository
->get($entity
->getEntityTypeId(), $entity
->getBundleId());
if (!$resource_type) {
return $normalized;
}
// Alter the attributes according to the resource config.
foreach ([
'attributes',
'relationships',
] as $property_type) {
foreach ($normalized['properties'][$property_type]['properties'] as $fieldname => $schema) {
$properties =& $normalized['properties'][$property_type]['properties'];
unset($properties[$fieldname]);
if (!$resource_type
->isFieldEnabled($fieldname)) {
// If the field is disabled, do nothing after removal.
continue;
}
else {
// Otherwise, substitute the public name.
$public_name = $resource_type
->getPublicName($fieldname);
$properties[$public_name] = $schema;
}
}
}
return $normalized;
}