Symfony -- Валидация данных. Способы

Синтаксис для любых способов валидации и всевозможные правила (размер данных, их наличие, соответствие регулярному выражению, формат данных и др.) можно найти в официальной документации Symfony, здесь.

Основная статья по валидации здесь.

Есть как минимум 3 способа валидировать данные в Symfony.

  1. Валидация с помощью аннотаций в Entity.

    • Выглядит так:
      // src/AppBundle/Entity/Author.php
      use Symfony\Component\Validator\Constraints as Assert;
      
      class Author
      {
          /**
           * @Assert\NotBlank()
           * @Assert\Length(
           *      min = 2,
           *      max = 50,
           *      minMessage = "Your first name must be at least {{ limit }} characters long",
           *      maxMessage = "Your first name cannot be longer than {{ limit }} characters"
           * )
           */
          public $name;
      }
    • Чтобы заработало, необходимо скорректировать способ валидации в config.yml:
      # app/config/config.yml
      framework:
          validation: { enable_annotations: true }
    • Так вывод ошибок может выглядеть в шаблоне Twig:
      <ul>
      {% for error in errors %}
          <li>{{ error.message }}</li>
      {% endfor %}
      </ul>
  2. Валидация при создании формы (добавляем атрибут 'constraints')

    • public function buildForm(FormBuilderInterface $builder, array $options)
      {
          $builder
              ->add('myField', TextType::class, [
                  'required' => true,
                  'constraints' =>[
                        new Length([
                             'min' => 3,
                        ]),
                        new Regex([
                              'pattern'=> "/^0[0-9]{8}$/x"
                        ]),
                   ],
              ]);
      }
    • Не забудьте объявить использование классов констрантов в файле создания формы:
      use Symfony\Component\Validator\Constraints\Length;
      use Symfony\Component\Validator\Constraints\Regex;
  3. Валидация в конфигурационных файлах и валидационные группы.

  4. Источники