getResourceType(); $cacheable_normalization = parent::normalize($object, $format, $context); assert($cacheable_normalization instanceof CacheableNormalization); if (is_subclass_of($resource_type->getDeserializationTargetClass(), ConfigEntityInterface::class)) { return new CacheableNormalization( $cacheable_normalization, static::enhanceConfigFields($object, $cacheable_normalization->getNormalization(), $resource_type) ); } return $cacheable_normalization; } /** * Applies field enhancers to a config entity normalization. * * @param mixed $object * The parent object. * @param array $normalization * The normalization to be enhanced. * @param \Drupal\jsonapi_extras\ResourceType\ConfigurableResourceType $resource_type * The resource type of the normalized resource object. * * @return array * The enhanced field data. */ protected static function enhanceConfigFields($object, array $normalization, ConfigurableResourceType $resource_type) { if (!empty($normalization['attributes'])) { foreach ($normalization['attributes'] as $field_name => $field_value) { $enhancer = $resource_type->getFieldEnhancer($field_name); if (!$enhancer) { continue; } $context['field_item_object'] = $object; $normalization['attributes'][$field_name] = $enhancer->undoTransform($field_value, new Context($context)); } } return $normalization; } }