У меня есть таблица, в которой каждая строка является объектом и показывает определенные свойства. В каждой строке также есть кнопка, которая открывает модальное окно удаления, которое удалит объект в этой строке из базы данных. Модальный шаблон Twig имеет доступ к массиву отображаемых объектов, но мне нужен способ найти, какой объект искать в БД и удалять.
Вот код шаблона ветки для отображения данных.
{% for announcement in announcements %}
<tr>
<th scope = "row">{{ announcement.content }}</th>
<td>{{ announcement.isDisplayed() }}</td>
<td style = "float:right;">
<div>
<button class = "btn btn-sm" data-toggle = "modal" data-target = "#announcementDeleteModal">
<span class = "fa fa-trash btn-link"></span>
Delete announcement
</button>
Модальный шаблон, который также имеет акценты на массив announcements
<div class = "modal fade" id = "announcementDeleteModal" tabindex = "-1" role = "dialog" aria-hidden = "true">
<div class = "modal-dialog" role = "document">
<div class = "modal-content">
<div class = "modal-header">
<h5 class = "modal-title" id = "exampleModalLabel">
<span class = "fa fa-cat"></span><div>Srsly delete that?</div>
</h5>
</div>
<div class = "modal-body">
{{ form_start(deleteForm) }}
{{ form_end(deleteForm) }}
<span class = "fa fa-cat"></span><div>Srsly delete that?</div>
<button type = "button" class = "btn btn-secondary" data-dismiss = "modal" aria-label = "Close">
Fine. Keep it.
</button>
</div>
</div>
</div>
Вот код jQuery, который отправляет запрос ajax. Переменная id собирает правильные данные. Мне просто нужно получить к нему доступ через контроллер. Я пробовал $request->get('id') и $request->get('id'),
$('.action-button').click(function () {
alert("ran");
var id = $(this).data('id');
alert(id);
$.ajax({
url:"/admin/announcements",
method: "POST",
cache: false,
data: { id: id },
success: function (html) {
alert("success");
// $(this).parent().parent().remove();
}
});
});
Да и веточка имеет к нему доступ в файле
Затем просто добавьте это как значение на кнопку?
@DarkBee, как мне добавить значение? Поиск в Интернете кажется лучшим способом - использовать JavaScript? Я новичок в JS, есть ли документация?
<button value = "{{ announcement.getId() }}">click</button> - что-то вроде этого
@DarkBee Хорошо, поэтому я могу сохранить значение на стороне HTML. Сложность заключается в том, что эта кнопка отображает раскрывающийся список Bootstrap с кнопками delete и edit. Оба открывают модальное окно, в котором я затем использую переданный идентификатор в моем контроллере Symfony, чтобы либо отредактировать, либо удалить объявление с этим идентификатором. Я не могу понять, как получить доступ к данным идентификатора в моем контроллере
см. обновленный код запроса ajax

На самом деле я не понимаю вопроса, но я предлагаю вам либо создать модальное окно для каждого элемента строки при рендеринге шаблона, либо написать собственный JS-скрипт и передать идентификатор объекта через атрибут данных и сохранить его в каком-то скрытом поле.
сохранить идентификатор объекта в атрибуте data-'' для кнопки?
Это зависит от вашего решения, лично я бы сохранил его на кнопке, так будет проще справляться. Затем используйте события js, чтобы получить этот идентификатор и сохранить его в скрытом поле формы для последующих почтовых процедур.
Хорошо, я попробую это спасибо. Мой модальный шаблон находится в отдельном файле. Можно ли отправить атрибут данных data-id в отдельный модальный файл или мне нужно их объединить?
Всегда ищите документацию twig.symfony.com/doc/2.x/tags/include.html, которую вы можете использовать 'with'.
У вас есть
idдля каждогоannouncement?