Як обирати групи валідації, засновані на натиснутій кнопці

Дата оновлення перекладу 2022-11-20

Як обирати групи валідації, засновані на натиснутій кнопці

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

Спочатку нам потрібно додати у форму дві кнопки:

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, прочитайте статтю Як динамічно конфігурувати групи валідації форм.