Динамическая форма Symfony на каждом поле - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь создать динамику для в Symfony. У меня есть объект, например Article, который я хочу создать с другим объектом. Для этого мне нужно добавить несколько полей в мою форму. Интересно, возможно ли иметь динамическое поле выбора? У меня есть форма как:

$builder
    ->add('article', 'entity', array('class' => 'AppBundle\Entity\Article',
                'choice_label' => 'name',
                'choices' => $articles,
                'multiple' => false))

Здесь мой список выбора представляет все статьи с именами. Я хотел бы иметь новый выбор в этом списке, как «новая статья». Если выбран этот вариант, должно появиться поле. Это текстовое поле должно быть похоже на «Имя этой статьи», и когда форма будет проверена, статья будет создана.

Возможно ли создать эту форму в Symfony? Я пытался это , но я не видел, как динамически заполнить форму с помощью списка вариантов.

1 Ответ

0 голосов
/ 03 сентября 2018

Отказ от ответственности: Это может быть неприемлемым / приемлемым ответом, но больше анализов моих предыдущих попыток решить эту проблему.

У меня было несколько случаев, когда мне нужна была такая функция. Большинство из них заканчивалось смешанным JS и Symfony, но ничего универсального.

То, что я тогда делал, было:

  • Создайте пользовательский тип поля формы, который переносит entity. Это поле добавляет <button> с некоторым обратным вызовом
  • Target twig визуализирует поле и обеспечивает обратный вызов JS для <button> полей формы, который, в свою очередь, вызывает некоторую конечную точку Symfony для создания объекта сущности. Вроде ОТДЫХА, но не совсем.
  • Наконец, после обработки вызова AJAX я получаю идентификатор из ответа JSON и вручную вставляю новый <option> в элемент управления <select> и выбираю его.

В случае <select> этого довольно легко достичь, , но , если вы choice полей визуализируете с expanded => true, вам действительно нужно поработать над магией вокруг макета элемента управления, чтобы не сломать это. Это может оказаться несколько болезненным:)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...