У меня проблема с группой такой же формы. В контроллере я создаю несколько таких форм
foreach($matchEntityList as $entityId => $entityItem) {
$form[$entityId] = $this->createForm(MatchType::class, $matchEntityList[$entityId], [
'matchId' => $entityId,
])->createView();
}
И в виду я отображаю каждую форму индивидуально. Когда я нажимаю кнопку «Отправить», я отправляю идентификатор формы во входных данных, скрытых для контроллера, и делаю запрос в этой форме.
$formId = $request->request->all()['match']['matchId'];
$form[$formId]->handleRequest($request);
if ($form[$formId]->isSubmitted() && $form[$formId]->isValid()) {
$em->flush($matchEntityList[$formId]);
}
Все работает хорошо, но хотелось бы сделать шаг вперед. Мне нужна одна кнопка отправки, и когда я нажимаю на него, я хочу проверить все изменения и сбросить ее. У вас есть идея, как это сделать?
Да, но было бы идеально проверять только те формы, которые были изменены, потому что это большая оптимизация. Я думаю о скрытом поле и javascript, а затем меняю значение этого поля, когда я что-то меняю, и делаю запрос только в этой форме. Но нужна только одна форма для отправки!
Используйте javascript (jquery) для выполнения таких задач. Не знаю, сработает ли скрытое поле. Что, если пользователь вводит некоторые данные в форме, которую он действительно хочет отправить, но по ошибке заполняет некоторые поля другой формы? В итоге вы получите две отправленные формы. Я бы попытался добавить обязательные поля для каждой формы, и если одно поле нежелательной формы заполнено, то не отправляйте никакую форму и отображайте сообщение для пользователя с запросом правильного действия.
Хорошо, но эта оптимизация - второстепенная задача. Мне нужна одна форма с одной отправкой, где когда-либо поле будет иметь имя типа match [firstTeam] [0] вместо match [firstTeam]






Вы имеете в виду одну кнопку отправки для отправки всех форм?