Как заполнить поле выбора типа сущности новым элементом, созданным прототипом в Symfony Form?

У меня такая ситуация:

У меня есть основная форма (сущность «Расы»), в которую встроена коллекция (сущность «Расовые черты»).

В этой коллекции есть поле под названием «Замена», которое ссылается на его собственную сущность («Расовые черты»), имеющую отношение «многие ко многим». Это поле используется для определения, заменяет ли текущая расовая черта одну или несколько других расовых черт и КАКИЕ.

Все работает нормально при нормальном поведении:

  • Добавление новых черт запускает прототип правильно, отношения Расы - Расовые черты и все такое в порядке.
  • EntityType загружает правильно уже сохраненный экземпляр из базы данных

Я хочу добиться принудительного заполнения ВСЕХ текущих полей EntityType, которые пользователь создает с помощью прототипирования («Добавить новую расовую черту»), новыми расовыми чертами, которые он точно вставляет.

на всякий случай, если пользователь добавит две новые расовые черты, которые у него будут, для каждого «заменяющего поля» (EntityType)

-Trait A (retrived from the Db)

-Trait B (retrived from the Db)

-New Trait (via "Add new Racial Trait")

-New Trait 2 (via "Add new Racial Trait")

Я уже пытался использовать javascript / jquery для управления полем самостоятельно, но, судя по всему, это вызвало ошибку при проверке, потому что я понятия не имею, как привязать мое новое значение к EntityType. Я хотел бы сейчас, если есть лучшая практика для достижения чего-то подобного, о чем я, очевидно, забыл.

На данный момент кода нет, потому что проблема заключается в самой логике, которую я боюсь применить неправильно.

Спасибо заранее за ваше время.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
173
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил проблему каким-то дурацким способом, и это хорошо, пока я не найду лучшего решения:

Сценарий:

  • Как только будет добавлена ​​новая коллекция элементов, я хочу заполнить свое поле сущности новым добавленным элементом.
  • Конечный результат будет примерно таким:

    [Форма

    [[Сборник 1

    [[[EntityField: Коллекция 1, Коллекция 2, Коллекция 3

    [[Сборник 2

    [[[EntityField: Коллекция 1, Коллекция 2, Коллекция 3

    [[Сборник 3

    [[[EntityField: Коллекция 1, Коллекция 2, Коллекция 3

Я пробовал другой подход к этому вопросу:

Сначала я попытался использовать только FormEvent, изменив мое поле Entity с вариантами, вставленными в viewData через JQuery. Проблема заключалась в том, что при использовании PRE_SUBMIT или SUBMIT оба позволяли мне работать только с одним элементом коллекции, разрешая событие следующим образом:

PRE_SUBMIT Collection 1 -> SUBMIT Collection 1 -> PRE_SUBMIT Collection 2 -> SUBMIT Collection 2 -> PRE_SUBMIT Collection 2 -> SUBMIT Collection 2 -> PRE_SUBMIT Form 1 -> SUBMIT Form 1

Это означало, что я не могу прочитать информацию о Коллекции 2 из события Коллекции 1, потому что они уже не были установлены в обычном / модельном представлении, и наоборот, работая из Коллекции 2/3 / или N, означает, что моя предыдущая коллекция уже была отправлена.

поэтому лучшим решением было:

  • Измените мой entityField в несопоставленном ChoiceField через событие PRE_SET_DATA только для «newAction»
  • установить список (массив) возможных вариантов, созданных пользователем, в несопоставленное скрытое поле, заполненное так же, как я сделал с моим новым несопоставленным ChoiceField
  • В PRE_SUBMIT, обновляя выбор моего неотображенного ChoiceField содержимым скрытого поля.
  • затем из контроллера используйте этот несопоставленный ChoiceField, чтобы установить мое отношение самообслуживания.

И что ж, это работает. Надеюсь, это поможет другим с такими же потребностями. Очевидно, если у кого-то есть предложение получше, я рад на слух!

Другие вопросы по теме