Форма Symfony2 - Как иметь скрытую ссылку на поле родительского объекта - PullRequest
5 голосов
/ 18 ноября 2011

Я новичок в формах Symfony и пытаюсь выяснить, как получить форму со скрытым полем, которое ссылается на родительский объект. Например, у меня есть список, который имеет много-к-одному отношения с контактами. При создании нового контакта необходимо скрытое поле с идентификатором списка, к которому добавляется контакт.

В настоящее время я пытаюсь вставить форму с именем ListIdType в мою форму ContactType. Единственное поле в форме ListIdType - это идентификатор списка. Это хорошо работает, потому что я могу установить список для пустой контактной сущности, и он автоматически заполнит элемент в форме с именем contact[list][id] (которая определена в форме ListIdType). Проблема в том, что когда я отправляю форму, я получаю сообщение об ошибке, в котором говорится, что в классе списка нет ни элемента "id", ни methed "setId ()".

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

Ответы [ 2 ]

6 голосов
/ 18 ноября 2011

Решение, которое я придумал, - добавить скрытое поле с параметром property_path, установленным на FALSE.Вот код в ContactType::buildForm:

  $builder->add('list_id', 'hidden', array(
        'data' => $data->getList()->getId(),
        'property_path' => FALSE,
    ));

Затем я обрабатываю поле в моем контроллере.

Это работает, но не кажется мне лучшим решением.Я все еще открыт, если кто-то может предложить лучший способ!

3 голосов
/ 19 мая 2012

Недавно я нашел пакет форума Грегвара, который добавляет тип формы entity_id.Он автоматически выполняет большинство необходимых преобразований и может быть именно тем, что вам нужно.

https://github.com/Gregwar/FormBundle

...