function ResourceObjectNormalizer::getNormalizationSchema
Overrides SchematicNormalizerTrait::getNormalizationSchema
File
-
core/
modules/ jsonapi/ src/ Normalizer/ ResourceObjectNormalizer.php, line 265
Class
- ResourceObjectNormalizer
- Converts the JSON:API module ResourceObject into a JSON:API array structure.
Namespace
Drupal\jsonapi\NormalizerCode
public function getNormalizationSchema(mixed $object, array $context = []) : array {
if (is_string($object)) {
// Without a true object we can only provide a generic schema.
return [
'$ref' => JsonApiSpec::SUPPORTED_SPECIFICATION_JSON_SCHEMA . '#/definitions/resource',
];
}
// ResourceObject is usually instantiated from a specific entity, however
// a placeholder can be created for purposes of schema generation which
// would provide access to the resource type, but not contain any "live"
// data.
assert($object instanceof ResourceObject);
$attributes_schema = [];
$relationships_schema = [];
$this->entityTypeManager
->getDefinition($object->getResourceType()
->getEntityTypeId())
->entityClassImplements(FieldableEntityInterface::class) ? $this->processContentEntitySchema($object, $context, $attributes_schema, $relationships_schema) : $this->processConfigEntitySchema($object->getResourceType(), $context, $attributes_schema);
return [
'allOf' => [
[
'$ref' => JsonApiSpec::SUPPORTED_SPECIFICATION_JSON_SCHEMA . '#/definitions/resourceIdentification',
],
],
'properties' => [
'meta' => [
'$ref' => JsonApiSpec::SUPPORTED_SPECIFICATION_JSON_SCHEMA . '#/definitions/meta',
],
'links' => [
'$ref' => JsonApiSpec::SUPPORTED_SPECIFICATION_JSON_SCHEMA . '#/definitions/resourceLinks',
],
// If the array is empty we must return an object so it won't encode as
// an array; we don't cast the value here so the returned value is still
// traversable as an array when accessed in PHP.
'attributes' => $attributes_schema ?: new \ArrayObject(),
'relationships' => $relationships_schema ?: new \ArrayObject(),
],
'unevaluatedProperties' => FALSE,
];
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.