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

Правило Json

Правило Json относится к секции form и проверяет, что значение поля является корректной JSON-строкой. Если значение не является валидным JSON, валидация завершится ошибкой. Правило можно использовать как в атрибутах сущности, так и в опциях полей формы.

Синтаксис

#[Json(message: 'текст ошибки')]

Пример

Давайте создадим сущность с полем data, которое должно содержать валидную JSON-строку:

<?php namespace AppEntity; use SymfonyComponentValidatorConstraints as Assert; class Article { #[AssertJson(message: 'Значение должно быть валидным JSON.')] private string $data = ''; public function getData(): string { return $this->data; } public function setData(string $data): self { $this->data = $data; return $this; } } ?>

Пример

Давайте проверим валидацию с помощью сервиса ValidatorInterface:

<?php namespace AppController; use AppEntityArticle; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentValidatorValidatorValidatorInterface; class ArticleController extends AbstractController { #[Route('/article/validate', name: 'article_validate')] public function validate(ValidatorInterface $validator): Response { $article = new Article(); $article->setData('{"name": "abcde", "age": 25}'); $errors = $validator->validate($article); if (count($errors) > 0) { return new Response((string) $errors); } return new Response('valid'); } } ?>

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

"valid"

Пример

Давайте проверим валидацию для некорректной JSON-строки:

<?php namespace AppController; use AppEntityArticle; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentValidatorValidatorValidatorInterface; class ArticleController extends AbstractController { #[Route('/article/invalid', name: 'article_invalid')] public function invalid(ValidatorInterface $validator): Response { $article = new Article(); $article->setData('{name: abcde}'); $errors = $validator->validate($article); if (count($errors) > 0) { return new Response('invalid json'); } return new Response('valid'); } } ?>

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

"invalid json"

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

  • класс Form,
    который представляет форму в Symfony
  • метод isValid,
    который проверяет валидность формы
  • правило NotBlank,
    которое проверяет, что значение не пустое
  • правило Regex,
    которое проверяет значение по регулярному выражению
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить