Як відправити форму з декількома кнопками
Дата оновлення перекладу 2023-09-07
Як відправити форму з декількома кнопками
Коли ваша форма містить більше однієї кноки відправлення, вам потрібно буде перевірити, яку кнопку натиснули, щоб адаптувати роботу програми у вашому контролері. Щоб зробити це, додайте другу кнопку з підписом "Зберегти та відправити" у вашу форму:
1 2 3 4 5 6
$form = $this->createFormBuilder($task)
->add('task', TextType::class)
->add('dueDate', DateType::class)
->add('save', SubmitType::class, ['label' => 'Create Task'])
->add('saveAndAdd', SubmitType::class, ['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);
}
Або ви можете отримати імʼя кнопки, використовуючи метод форми getClickedButton():
1 2 3 4 5 6 7 8 9
if ($form->getClickedButton() && 'saveAndAdd' === $form->getClickedButton()->getName()) {
// ...
}
// при використанні вкладених форм, дві або більше кнопки мають однакове імʼя;
// у таких випадках, порівнюйте обʼєкти кнопок, а не імена
if ($form->getClickedButton() === $form->get('saveAndAdd')){
// ...
}