public function EntityNormalizer::denormalize in Drupal 9
Same name and namespace in other branches
- 8 core/modules/serialization/src/Normalizer/EntityNormalizer.php \Drupal\serialization\Normalizer\EntityNormalizer::denormalize()
1 call to EntityNormalizer::denormalize()
- ConfigEntityNormalizer::denormalize in core/
modules/ serialization/ src/ Normalizer/ ConfigEntityNormalizer.php
1 method overrides EntityNormalizer::denormalize()
- ConfigEntityNormalizer::denormalize in core/
modules/ serialization/ src/ Normalizer/ ConfigEntityNormalizer.php
File
- core/
modules/ serialization/ src/ Normalizer/ EntityNormalizer.php, line 43
Class
- EntityNormalizer
- Normalizes/denormalizes Drupal entity objects into an array structure.
Namespace
Drupal\serialization\NormalizerCode
public function denormalize($data, $class, $format = NULL, array $context = []) {
$entity_type_id = $this
->determineEntityTypeId($class, $context);
$entity_type_definition = $this
->getEntityTypeDefinition($entity_type_id);
// The bundle property will be required to denormalize a bundleable
// fieldable entity.
if ($entity_type_definition
->entityClassImplements(FieldableEntityInterface::class)) {
// Extract bundle data to pass into entity creation if the entity type uses
// bundles.
if ($entity_type_definition
->hasKey('bundle')) {
// Get an array containing the bundle only. This also remove the bundle
// key from the $data array.
$create_params = $this
->extractBundleData($data, $entity_type_definition);
}
else {
$create_params = [];
}
// Create the entity from bundle data only, then apply field values after.
$entity = $this->entityTypeManager
->getStorage($entity_type_id)
->create($create_params);
$this
->denormalizeFieldData($data, $entity, $format, $context);
}
else {
// Create the entity from all data.
$entity = $this->entityTypeManager
->getStorage($entity_type_id)
->create($data);
}
// Pass the names of the fields whose values can be merged.
// @todo https://www.drupal.org/node/2456257 remove this.
$entity->_restSubmittedFields = array_keys($data);
return $entity;
}