public function DateTimeFormatConstraintValidator::validate in Drupal 10
Same name and namespace in other branches
- 8 core/modules/datetime/src/Plugin/Validation/Constraint/DateTimeFormatConstraintValidator.php \Drupal\datetime\Plugin\Validation\Constraint\DateTimeFormatConstraintValidator::validate()
- 9 core/modules/datetime/src/Plugin/Validation/Constraint/DateTimeFormatConstraintValidator.php \Drupal\datetime\Plugin\Validation\Constraint\DateTimeFormatConstraintValidator::validate()
File
- core/
modules/ datetime/ src/ Plugin/ Validation/ Constraint/ DateTimeFormatConstraintValidator.php, line 19
Class
- DateTimeFormatConstraintValidator
- Constraint validator for DateTime items to ensure the format is correct.
Namespace
Drupal\datetime\Plugin\Validation\ConstraintCode
public function validate($item, Constraint $constraint) {
/** @var \Drupal\datetime\Plugin\Field\FieldType\DateTimeItem $item */
if (isset($item)) {
$value = $item
->getValue()['value'];
if (!is_string($value)) {
$this->context
->addViolation($constraint->badType);
}
else {
$datetime_type = $item
->getFieldDefinition()
->getSetting('datetime_type');
$format = $datetime_type === DateTimeItem::DATETIME_TYPE_DATE ? DateTimeItemInterface::DATE_STORAGE_FORMAT : DateTimeItemInterface::DATETIME_STORAGE_FORMAT;
$date = NULL;
try {
$date = DateTimePlus::createFromFormat($format, $value, new \DateTimeZone(DateTimeItemInterface::STORAGE_TIMEZONE));
} catch (\InvalidArgumentException $e) {
$this->context
->addViolation($constraint->badFormat, [
'@value' => $value,
'@format' => $format,
]);
return;
} catch (\UnexpectedValueException $e) {
$this->context
->addViolation($constraint->badValue, [
'@value' => $value,
'@format' => $format,
]);
return;
}
if ($date === NULL || $date
->hasErrors()) {
$this->context
->addViolation($constraint->badFormat, [
'@value' => $value,
'@format' => $format,
]);
}
}
}
}