Что бы я хотел: Я хочу иметь форму ответа, чтобы при нажатии на сообщение в моем форуме она добавляла форму после выбранного сообщения.И когда я отправляю форму, выбранный пост или идентификатор должен быть в форме ввода, чтобы иметь возможность сохранить новый комментарий как объект с допустимым атрибутом в Doctrine / Symfony в моем контроллере.
Что яdid: Я мог бы добавить форму после выбранного элемента с помощью Jquery.Я добавил скрытый ввод в форму с тем же именем, что и атрибут Entity (в противном случае Symfony говорил, что такой атрибут для этой сущности не определен).Formbuilder:
// other lines of codes
$formbuilder
->add('Parent', HiddenType::class, array('data' => null));
// ….
Я добавил идентификатор в представление для каждого сообщения. (Идентичным идентификатором в базе данных / topicarg является мой объект, содержащий информацию сообщения)
<button class="btn-info comment" id="{{"#{topicarg.id}"}}"> Answer this post </button> </br>
изатем я изменил скрытое значение формы с помощью Jquery, когда пользователь нажимает:
// ---------------------------------------CREATE ARGUMENTATION FORM AND PUT IT AFTER THE MAIN ARGUMENTATION
$(".comment").click(function(){
// Get the ID of the targeted comment in the same element
var argtargetid =parseInt($(this).attr("id"), 10);
// CHANGE THE HIDDEN VALUE IN THE FORM WITH THE ID OF THE TARGETED ELEMENT
$("#formarg_Parent").val(argtargetid);
// MOVE AND DISPLAY THE FORM
var argblock = $(this).parent().parent().parent();
$("#formarg").appendTo(argblock);
$("#formarg").toggle(toggleTime);
});
Здесь я проверил $("#formarg_Parent").val(argtargetid);
с предупреждением, и он отображает число, как и ожидалось.И, наконец, в моем контроллере я пытаюсь изменить идентификатор целевого сообщения с помощью объекта, соответствующего этому идентификатору, до обработки запроса.
$contributionid=$formarg->get('Parent')->getData();
$topicargtarget=$this->getContribution($contributionid);
$formarg->get('Parent')->setData($topicargtarget);
$formarg→handleRequest($request);
Но Symfony возвращает следующее:
Ошибка типа: Аргумент 1, переданный getContribution (), должен иметь тип integer, значение NULL
Я не смог найти ошибку, так как, я проверил значение в форме с предупреждением, котороебыло удовлетворительным, поэтому он находится в форме, готовой для передачи контроллеру, я получаю его в контроллере и превращаю в объект.Но что-то не так, очевидно, в моем методе или синтаксисе.Спасибо, что уделили мне время!