protected function EntityNormalizerTrait::prepareInput in JSON:API Extras 8.2
Same name and namespace in other branches
- 8 src/Normalizer/EntityNormalizerTrait.php \Drupal\jsonapi_extras\Normalizer\EntityNormalizerTrait::prepareInput()
Prepares the input data to create the entity.
Parameters
array $data: The input data to modify.
\Drupal\jsonapi\ResourceType\ResourceType $resource_type: Contains the info about the resource type.
Return value
array The modified input data.
1 method overrides EntityNormalizerTrait::prepareInput()
- ConfigEntityNormalizer::prepareInput in src/
Normalizer/ ConfigEntityNormalizer.php - Prepares the input data to create the entity.
File
- src/
Normalizer/ EntityNormalizerTrait.php, line 23
Class
- EntityNormalizerTrait
- Common code for entity normalizers.
Namespace
Drupal\jsonapi_extras\NormalizerCode
protected function prepareInput(array $data, ResourceType $resource_type) {
/** @var \Drupal\Core\Field\FieldStorageDefinitionInterface[] $field_storage_definitions */
$field_storage_definitions = \Drupal::service('entity_field.manager')
->getFieldStorageDefinitions($resource_type
->getEntityTypeId());
$data_internal = [];
/** @var \Drupal\jsonapi_extras\ResourceType\ConfigurableResourceType $resource_type */
// Translate the public fields into the entity fields.
foreach ($data as $public_field_name => $field_value) {
// Skip any disabled field.
$internal_name = $resource_type
->getInternalName($public_field_name);
if (!$resource_type
->isFieldEnabled($internal_name)) {
continue;
}
$enhancer = $resource_type
->getFieldEnhancer($public_field_name, 'publicName');
if (isset($field_storage_definitions[$internal_name])) {
$field_storage_definition = $field_storage_definitions[$internal_name];
if ($field_storage_definition
->getCardinality() === 1) {
try {
$field_value = $enhancer ? $enhancer
->transform($field_value) : $field_value;
} catch (\TypeError $exception) {
$field_value = NULL;
}
}
elseif (is_array($field_value)) {
foreach ($field_value as $key => $individual_field_value) {
try {
$field_value[$key] = $enhancer ? $enhancer
->transform($individual_field_value) : $individual_field_value;
} catch (\TypeError $exception) {
$field_value[$key] = NULL;
}
}
}
}
$data_internal[$internal_name] = $field_value;
}
return parent::prepareInput($data_internal, $resource_type);
}