Как отправить форму с несколькими кнопками

Как отправить форму с несколькими кнопками

Когда ваша форма содержит более одной кнопки отправки, вам нужно будет проверить, какую кнопку нажали, чтобы адаптировать работу программы в вашем контроллере. Чтобы сделать это, добавьте вторую кнопку с титром "Сохранить и добавить" в вашу форму:

1
2
3
4
5
6
$form = $this->createFormBuilder($task)
    ->add('task', TextType::class)
    ->add('dueDate', DateType::class)
    ->add('save', SubmitType::class, array('label' => 'Create Task'))
    ->add('saveAndAdd', SubmitType::class, array('label' => 'Save and Add'))
    ->getForm();

В вашем контроллере, используйте метод кнопки isClicked(), чтобы запросить, была ли нажата кнопка "Сохранить и добавить":

1
2
3
4
5
6
7
8
9
if ($form->isSubmitted() && $form->isValid()) {
    // ... выполнить какое-то действие, например, сохранить задание в БД

    $nextAction = $form->get('saveAndAdd')->isClicked()
        ? 'task_new'
        : 'task_success';

    return $this->redirectToRoute($nextAction);
}

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.