function DateTimeIso8601Normalizer::normalize

Same name in other branches
  1. 9 core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php \Drupal\serialization\Normalizer\DateTimeIso8601Normalizer::normalize()
  2. 8.9.x core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php \Drupal\serialization\Normalizer\DateTimeIso8601Normalizer::normalize()
  3. 10 core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php \Drupal\serialization\Normalizer\DateTimeIso8601Normalizer::normalize()

Overrides SchematicNormalizerTrait::normalize

File

core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php, line 38

Class

DateTimeIso8601Normalizer
Converts values for the DateTimeIso8601 data type to RFC3339.

Namespace

Drupal\serialization\Normalizer

Code

public function normalize($object, $format = NULL, array $context = []) : array|string|int|float|bool|\ArrayObject|null {
    if ($format === 'json_schema') {
        return $this->getNormalizationSchema($object, $context);
    }
    assert($object instanceof DateTimeIso8601);
    $field_item = $object->getParent();
    // @todo Remove this in https://www.drupal.org/project/drupal/issues/2958416.
    if ($field_item instanceof DateTimeItem && $field_item->getFieldDefinition()
        ->getFieldStorageDefinition()
        ->getSetting('datetime_type') === DateTimeItem::DATETIME_TYPE_DATE) {
        $drupal_date_time = $object->getDateTime();
        if ($drupal_date_time === NULL) {
            return $drupal_date_time;
        }
        return $drupal_date_time->format($this->allowedFormats['date-only']);
    }
    return parent::normalize($object, $format, $context);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.