Форма Symfony4 с классом TableInheritance - PullRequest
0 голосов
/ 25 октября 2018

У меня есть 3 различных типа членов, поэтому я использую наследование таблиц.Итак, у меня есть суперкласс "Member", а затем для простоты "MemberA", "MemberB", "MemberC".Эти классы наследуют большинство своих полей от класса «Member» с несколькими дополнительными элементами.

Я пытаюсь создать одну форму, причем первое поле будет «Тип члена», где MemberA, B и C будутбыть варианты и в зависимости от того, который был выбран, он изменит форму соответственно.Я чувствую, что динамические формы, как объяснено в документации Symfony, будут работать, но первая проблема, с которой я сталкиваюсь, это какой объект отправить конструктору формы.(Член ?, Массив ()?).Затем я предполагаю, что моя опция «data_class» будет изначально установлена ​​на «Member», и когда пользователь изменил выпадающий список на другой тип, смогу ли я динамически изменить «data_class»?Также, если бы я первоначально отправил объект типа Member, форма автоматически трансформировала бы его в дочерний тип (т. Е. MemberA) на основе класса данных, или мне пришлось бы вручную преобразовывать его в прослушивателе событий формы.

У меня еще не написано много кода, так что это больше вопрос теории.

Другой вариант, который я изучал, был этот пост .Тем не менее, если пользователь отправляет форму, содержащую ошибку, страница будет перерисована с использованием только начального поля выбора, возвращаемого к «Выбрать тип».Поскольку это поле на самом деле не является частью какой-либо дочерней формы, оно фактически не отправляется при нажатии кнопки отправки, поэтому я не вижу способа автоматически повторно отобразить правильную форму, чтобы пользователь не нуждался в нейповторно выбрать тип, чтобы увидеть ошибки.Теперь, когда я пишу это, я думаю, что я мог видеть, какие из 3 форм были отправлены, и установить поле «тип» обратно на то, которое сопоставляется с отправленной формой, но я чувствую, что этот способ является своего рода хакерским и долженбыть в состоянии сделать с динамическими формами.

...