/**
* {@inheritdoc}
*/
public function denormalize($data, $class, $format = null, array $context = [])
{
$result = $this->createObject($class);
$fields = $this->fieldHelper->getFields($class, true);
foreach ($fields as $field) {
$fieldName = $field['name'];
if (array_key_exists($fieldName, $data)) {
$value = $data[$fieldName];
if ($data[$fieldName] !== null && ($this->fieldHelper->isRelation($field) || $this->fieldHelper->isDateTimeField($field))) {
if ($this->fieldHelper->isMultipleRelation($field)) {
$entityClass = sprintf('ArrayCollection<%s>', $field['related_entity_name']);
} elseif ($this->fieldHelper->isSingleRelation($field)) {
$entityClass = $field['related_entity_name'];
} else {
$entityClass = 'DateTime';
$context = array_merge($context, ['type' => $field['type']]);
}
$context = array_merge($context, ['fieldName' => $fieldName]);
$value = $this->serializer->denormalize($value, $entityClass, $format, $context);
}
$this->fieldHelper->setObjectValue($result, $fieldName, $value);
}
}
return $result;
}