Symfony Form не получает значения, как это должно - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь создать форму для публикации новых «опросов», каждый из которых состоит из «заголовка» и набора «опций», параметры являются отдельными объектами и связаны с объектом «Съемка» посредством доктрины связи ManyToOne.

Я использую CollectionType для динамического создания полей в форме.Затем я использую JQuery для динамического создания этих дополнительных форм.

Проблема заключается в том, что, как только я пытаюсь отправить форму, она отправляет только объект «Съемка», но не объекты «Опция».Я знаю это, потому что после запроса обоих вариантов «опрос» сохраняется в базе данных, а параметры - нет.

Дело в том, что когда я рендерим форму как можно проще, без чего-либо дополнительного,и мой код jquery просто добавляет «data-prototype», без каких-либо изменений, он работает нормально.Опрос и варианты сохранены.Я знаю это, потому что я проверял это.

После того, как это сработало, я решил сделать форму немного более презентабельной, и, должно быть, я что-то напортачил.

Вот отрендеренный HTML-кодмоя форма: https://pastebin.com/5UuTXy1F

Вот соответствующий HTML, вот как выглядит поле после того, как оно было создано JQuery.

<div class="survey_option">
    <label>1: </label>
    <input type="text" id="survey_options_0_title" name="survey[options][0][title]" required="required" maxlength="500">
    <button type="button" class="remove_option_link">x</button>
</div>

После того, как что-то написано в каждом поле и отправлено,коллекция опций пуста.

Тогда у меня вопрос: почему форма не может найти «опции» во время отправки формы?Это потому, что он по какой-то причине не видит входные данные или потому, что некоторые его атрибуты неверны?Это потому, что мой код JavaScript делает что-то глупое?

И на всякий случай вот еще один соответствующий код: Сценарий JQuery, который используется для динамического добавления полей: https://pastebin.com/KCdVK60q

Тип формы SurveyOption: https://pastebin.com/uGe4rqCF

Тип формы Survey: https://pastebin.com/Zs4BEEKY

И функция контроллера, отвечающая за обработку формы: https://pastebin.com/zrz0uJei

1 Ответ

0 голосов
/ 04 февраля 2019

Я использовал тег вместо тега;Мой SurveyOptionType использовал TextareaType (недосмотр, вероятно, скопировал не то).

Кроме того, тег {{ form_start(form) }} Twig был помещен внутри элемента, а {{ form_end(form) }} был внутри другого элемента.Это означает, что входные данные для Options даже не были внутри формы.

После исправления этих проблем все работает как задумано.

...