From 82ce5edb28d7e9eb86184178ca0b186ccc984f2d Mon Sep 17 00:00:00 2001 From: Marijn Doeve Date: Tue, 7 Jul 2026 09:30:58 +0200 Subject: [PATCH] fix: set explicit form action URLs for Turbo Frame modal forms When a form has no explicit action, Symfony renders action="" which the browser resolves to the page URL, not the URL the Turbo Frame was fetched from. This caused edits submitted via the modal to POST to the wrong route and silently discard changes. --- .../Backoffice/QuestionBankController.php | 13 +++++++++++-- .../Backoffice/QuizQuestionController.php | 8 +++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/Controller/Backoffice/QuestionBankController.php b/src/Controller/Backoffice/QuestionBankController.php index 56afa5a..70f181a 100644 --- a/src/Controller/Backoffice/QuestionBankController.php +++ b/src/Controller/Backoffice/QuestionBankController.php @@ -90,7 +90,10 @@ class QuestionBankController extends AbstractController $isTurboFrame = $request->headers->has('Turbo-Frame'); - $form = $this->createForm(BankQuestionFormType::class, $bankQuestion, ['season' => $season]); + $form = $this->createForm(BankQuestionFormType::class, $bankQuestion, [ + 'season' => $season, + 'action' => $this->generateUrl('tvdt_backoffice_question_bank_new', ['seasonCode' => $season->seasonCode]), + ]); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { @@ -138,7 +141,13 @@ class QuestionBankController extends AbstractController $isTurboFrame = $request->headers->has('Turbo-Frame'); - $form = $this->createForm(BankQuestionFormType::class, $bankQuestion, ['season' => $season]); + $form = $this->createForm(BankQuestionFormType::class, $bankQuestion, [ + 'season' => $season, + 'action' => $this->generateUrl('tvdt_backoffice_question_bank_edit', [ + 'seasonCode' => $season->seasonCode, + 'bankQuestion' => $bankQuestion->id, + ]), + ]); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { diff --git a/src/Controller/Backoffice/QuizQuestionController.php b/src/Controller/Backoffice/QuizQuestionController.php index 269046f..3d59289 100644 --- a/src/Controller/Backoffice/QuizQuestionController.php +++ b/src/Controller/Backoffice/QuizQuestionController.php @@ -46,7 +46,13 @@ class QuizQuestionController extends AbstractController $isTurboFrame = $request->headers->has('Turbo-Frame'); - $form = $this->createForm(QuestionFormType::class, $question); + $form = $this->createForm(QuestionFormType::class, $question, [ + 'action' => $this->generateUrl('tvdt_backoffice_quiz_question_edit', [ + 'seasonCode' => $season->seasonCode, + 'quiz' => $quiz->id, + 'question' => $question->id, + ]), + ]); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) {