function DateTimeFormatConstraintValidator::validate
Same name in other branches
- 9 core/modules/datetime/src/Plugin/Validation/Constraint/DateTimeFormatConstraintValidator.php \Drupal\datetime\Plugin\Validation\Constraint\DateTimeFormatConstraintValidator::validate()
- 8.9.x core/modules/datetime/src/Plugin/Validation/Constraint/DateTimeFormatConstraintValidator.php \Drupal\datetime\Plugin\Validation\Constraint\DateTimeFormatConstraintValidator::validate()
- 10 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) : void {
/** @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) {
$this->context
->addViolation($constraint->badFormat, [
'@value' => $value,
'@format' => $format,
]);
return;
} catch (\UnexpectedValueException) {
$this->context
->addViolation($constraint->badValue, [
'@value' => $value,
'@format' => $format,
]);
return;
}
if ($date === NULL || $date->hasErrors()) {
$this->context
->addViolation($constraint->badFormat, [
'@value' => $value,
'@format' => $format,
]);
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.