Правило Date
Правило Date относится к секции form
и проверяет, что значение поля является
корректной датой. Правило вешается на поле
формы через опцию constraints. Первым
параметром передаётся сообщение об ошибке,
которое будет показано пользователю, если
значение не является датой.
Синтаксис
new Date(
message: 'error message',
format: 'Y-m-d'
)
Пример
Давайте создадим форму с полем date
и повесим на него правило Date:
<?php
namespace AppForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentValidatorConstraintsDate;
use SymfonyComponentOptionsResolverOptionsResolver;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('date', TextType::class, [
'constraints' => [
new Date([
'message' => 'Please enter a valid date.',
]),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => null,
]);
}
}
?>
Пример
Давайте проверим, как правило реагирует
на корректное значение '2026-09-14':
<?php
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraintsDate;
$validator = Validation::createValidator();
$constraint = new Date([
'message' => 'Please enter a valid date.',
]);
$errors = $validator->validate('2026-09-14', $constraint);
echo count($errors);
?>
Результат выполнения кода:
0
Пример
Давайте проверим, как правило реагирует
на некорректное значение 'abcde':
<?php
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraintsDate;
$validator = Validation::createValidator();
$constraint = new Date([
'message' => 'Please enter a valid date.',
]);
$errors = $validator->validate('abcde', $constraint);
echo $errors[0]->getMessage();
?>
Результат выполнения кода:
"Please enter a valid date."
Пример
Давайте зададим собственный формат даты
'd.m.Y' через опцию format:
<?php
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraintsDate;
$validator = Validation::createValidator();
$constraint = new Date([
'message' => 'Please enter a valid date.',
'format' => 'd.m.Y',
]);
$errors = $validator->validate('14.09.2026', $constraint);
echo count($errors);
?>
Результат выполнения кода:
0
Смотрите также
-
правило
DateTime,
которое проверяет дату и время -
правило
Time,
которое проверяет время -
поле
DateType,
которое создаёт поле для выбора даты -
поле
DateTimeType,
которое создаёт поле для выбора даты и времени