РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
347 of 1361 menu

Правило DateTime

Правило DateTime вешается на поле формы и проверяет, что переданное значение является корректной датой и временем. Первым параметром передаётся формат даты, которому должно соответствовать значение. Если значение не соответствует формату или не является датой, валидация завершится ошибкой.

Синтаксис

new DateTime(format: 'Y-m-d H:i:s')

Пример

Давайте создадим форму с полем createdAt и повесим на него правило DateTime:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsDateTime; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('createdAt', TextType::class, [ 'constraints' => [ new DateTime(format: 'Y-m-d H:i:s'), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => null, ]); } } ?>

Если пользователь введёт значение '2024-01-15 10:30:00', валидация пройдёт успешно.

Пример

Давайте проверим работу правила в контроллере и выведем результат валидации:

<?php namespace AppController; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $form = $this->createForm(ArticleType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); return new Response('valid: ' . $data['createdAt']); } return new Response('invalid'); } } ?>

Результат выполнения кода для корректной даты:

"valid: 2024-01-15 10:30:00"

Пример

Давайте передадим некорректное значение 'abcde' и посмотрим на результат:

<?php namespace AppController; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $form = $this->createForm(ArticleType::class); $form->handleRequest($request); if ($form->isSubmitted() && !$form->isValid()) { $errors = $form->getErrors(true); foreach ($errors as $error) { return new Response($error->getMessage()); } } return new Response('no errors'); } } ?>

Результат выполнения кода для некорректного значения:

"This value is not a valid datetime."

Смотрите также

  • правило Date,
    которое проверяет корректность даты
  • правило Time,
    которое проверяет корректность времени
  • поле DateTimeType,
    которое создаёт поле для ввода даты и времени
  • метод isValid,
    который проверяет валидность формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить