Symfony 3.2表单:在处理请求后混合ID和实体值

时间:2018-03-20 16:34:33

标签: php symfony symfony-forms 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
...

我在Symfony profiler的Request / POST Parameters部分看到相同的帖子数据。我在这里提供数据作为文本,因为截图将包含许多其他不必要的信息。由于隐私原因,我替换了原始的名字和姓氏值。是的,“foo bar”出现两次。

我的问题是Symfony在处理请求后混合了ID和内容:

    $lead = $this->getRepository()->findWithContacts($id);
    $form = $this->createForm(LeadType::class, $lead);
    $form->handleRequest($request);
来自Symfony profiler的表格/提交数据部分的截图:

Symfony submit data

正如你所看到的,现在测试的是John Doe的ID 296310.我不知道为什么会这样。在以后保留表单数据时,会导致大量插入和删除。我还观察到处理完表格后数据完全丢失了。

1 个答案:

答案 0 :(得分:0)

屏幕截图中的返回值为LeadContact,但您似乎正在尝试获取Lead。无论如何,您应该传递您尝试呼叫的任何存储库的类名。

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

我猜你想要Lead而不是LeadContact,如:

$lead = $this->getRepository(Lead::class)->findWithContacts($id);