Формы Symfony 3.2: идентификаторы и значения объектов перепутаны после запроса обработки

Это выдержка из моих данных POST:

...
lead[contacts][6][firstName]: test
lead[contacts][6][id]: 543961
lead[contacts][6][lastName]: test
...
lead[contacts][7][firstName]: John
lead[contacts][7][id]: 296310
lead[contacts][7][lastName]: Doe
...
lead[contacts][8][firstName]: foo
lead[contacts][8][id]: 296320
lead[contacts][8][lastName]: bar
...
lead[contacts][9][firstName]: foo
lead[contacts][9][id]: 296330
lead[contacts][9][lastName]: bar
...

Я вижу те же данные сообщения в разделе «Параметры запроса / POST» профилировщика Symfony. Я предоставляю данные здесь в виде текста, потому что снимок экрана будет содержать много другой ненужной информации. Из соображений конфиденциальности я заменил исходные значения имени и фамилии. Да, "foo bar" появляется дважды.

Моя проблема в том, что Symfony смешивает идентификаторы и содержимое после обработки запроса:

    $lead = $this->getRepository()->findWithContacts($id);
    $form = $this->createForm(LeadType::class, $lead);
    $form->handleRequest($request);

снимок экрана из раздела Form / Submitted Data профилировщика Symfony:

Данные отправки Symfony

Как видите, test теперь имеет идентификатор Джона Доу 296310. Я понятия не имею, почему это происходит. При дальнейшем сохранении данных формы это приводит к большому количеству вставок и удалений. Я также заметил, что данные были полностью потеряны после обработки формы.


person fishbone    schedule 20.03.2018    source источник


Ответы (1)


Ваше возвращаемое значение на скриншоте — это LeadContact, но похоже, что вы пытаетесь получить Lead. Несмотря на это, вы должны передавать имя класса того репозитория, который вы пытаетесь вызвать.

$yourVar = $this->getRepository(YourClass::class)->findMethod($id);

Я предполагаю, что вам нужен Lead, а не LeadContact, например:

$lead = $this->getRepository(Lead::class)->findWithContacts($id);
person Ollie in PGH    schedule 20.03.2018
comment
Сущность My Lead имеет отношение OneToMany к LeadContact. Таким образом, мой LeadType содержит контакты встроенной формы, представляющие его записи LeadContact. - person fishbone; 21.03.2018