Как выбирать группы валидации, основанные на нажатой кнопке

Как выбирать группы валидации, основанные на нажатой кнопке

Когда ваша форма содержит несколько кнопок отправки, вы можете изменять группу валидации, в зависимости от того, какая кнопка была использована для отправки формы. Например, рассмотрите форму в мастере, которая позволяет вам перейти к следующему шагу или вернуться к предыдущему. Также предположите, что при возвращении к предыдущему шагу, данные из формы должны быть сохранены, но не валидированы.

Для начала, нам надо добавить в форму две кнопки:

1
2
3
4
5
$form = $this->createFormBuilder($task)
    // ...
    ->add('nextStep', SubmitType::class)
    ->add('previousStep', SubmitType::class)
    ->getForm();

Потом, мы конфигурируем кнопку для возврата к предыдущему шагу так, чтобы она запускала определённые группые валидации. В этом примере, мы хотим, чтобы она сдерживала валидацию, так что мы устанавливаем опцию validation_groups как "false":

1
2
3
4
5
6
$form = $this->createFormBuilder($task)
    // ...
    ->add('previousStep', SubmitType::class, array(
        'validation_groups' => false,
    ))
    ->getForm();

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

See also

Чтобы увидеть, как использовать сервис для динамического решения validation_groups, прочтите статью Как динамически конфигурировать группы валидации форм.