У меня есть таблица Twitter Bootstrap, где каждая строка представляет собой отдельное объявление.В каждой строке есть кнопка, которая открывает раскрывающийся список Bootstrap с двумя кнопками «Редактировать объявление» и «Удалить объявление».При нажатии кнопки редактирования открывается модальное окно, в котором пользователь может редактировать текст объявления, отправляемого с помощью форм Symfony.Моя текущая реализация отправляет идентификатор объявления через jQuery, чтобы контроллер Smyfony знал, какой из них редактировать в базе данных.
Но сейчас я пытаюсь назначить уникальный идентификатор модалам, передав идентификатор объявления.Тем не менее, модал имеет собственный шаблон Twig, поэтому имеет доступ только к массиву всех объявлений.
В настоящее время я переместил модал в основной шаблон, но кнопки формы Symfony отображаются только в первом..
Код для модального (в основном шаблоне, который отображает таблицу)
{# Delete Modal #}
<div class="modal fade" id="delete-announcement-modal-{{ announcement.id }}" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-body">
{{ form_start(deleteForm) }}
<h1 class="modal-title">
<span class="fas fa-cat"></span> Srsly delete that?
</h1>
{{ form_widget(deleteForm.id) }}
<button type="button" class="btn btn-primary" data-dismiss="modal" aria-label="Close">
Fine. keep it.
</button>
{{ form_widget(deleteForm.delete) }}
{{ form_end(deleteForm) }}
</div>
</div>
</div>
</div>
Код контроллера.
$editForm = $this->createForm(FormType::class)
->add('edit', SubmitType::class, array('label' => ' Save changes', 'attr' => ['class' => 'btn btn-primary']))
->add('idd', HiddenType::class, [])
$editForm->handleRequest($request);
if ($editForm->get('edit')->isClicked() and $editForm->isValid()){
$announcementToEdit = $em->getRepository(Announcement::class)->find($editForm->getData()['idd']);
$announcementToEdit->setContent($request->get('content'));
$em->flush();
$this->logger->info(
'Announcement edited',
[
'user id' => $currentUser->getId(),
'date created' => date("Y-m-d h:i:sa"),
'announcement id' => $announcementToEdit->getId(),
]
);
return $this->redirectToRoute('admin_announcements');
}