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

Правило Timezone

Правило Timezone относится к группе ограничений валидации Symfony и вешается на поле формы или свойство сущности. Оно проверяет, что переданное значение является допустимым идентификатором часового пояса, например 'Europe/Moscow' или 'UTC'. Правило можно использовать как в виде атрибута, так и в виде ограничения в конфигурации формы.

Синтаксис

#[Timezone]

Также правило можно подключать через Constraints в опциях поля формы:

'constraints' => [ new Timezone(), ],

Пример

Давайте создадим сущность с полем timezone и повесим на него правило Timezone:

<?php namespace AppEntity; use SymfonyComponentValidatorConstraints as Assert; class Article { #[AssertTimezone] private string $timezone = ''; public function getTimezone(): string { return $this->timezone; } public function setTimezone(string $timezone): void { $this->timezone = $timezone; } } ?>

Теперь проверим валидацию с корректным значением:

<?php namespace AppController; use AppEntityArticle; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidatorValidatorInterface; class ArticleController extends AbstractController { public function index(ValidatorInterface $validator): Response { $article = new Article(); $article->setTimezone('Europe/Moscow'); $errors = $validator->validate($article); if (count($errors) > 0) { return new Response((string) $errors); } return new Response('valid'); } } ?>

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

"valid"

Пример

Давайте передадим некорректный часовой пояс и посмотрим на сообщение об ошибке:

<?php namespace AppController; use AppEntityArticle; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidatorValidatorInterface; class ArticleController extends AbstractController { public function index(ValidatorInterface $validator): Response { $article = new Article(); $article->setTimezone('abcde'); $errors = $validator->validate($article); return new Response((string) $errors); } } ?>

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

"Object(AppEntityArticle).timezone: This value is not a valid timezone."

Пример

Давайте применим правило Timezone непосредственно в форме через опцию constraints:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsTimezone; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('timezone', TextType::class, [ 'constraints' => [ new Timezone(), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => null, ]); } } ?>

Теперь обработаем отправку формы в контроллере:

<?php namespace AppController; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(Request $request): Response { $form = $this->createForm(ArticleType::class, null, [ 'csrf_protection' => false, ]); $form->submit([ 'timezone' => 'Europe/Moscow', ]); if ($form->isValid()) { return new Response('valid'); } return new Response((string) $form->getErrors(true)); } } ?>

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

"valid"

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

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