【发布时间】:2015-05-13 15:21:50
【问题描述】:
我有一个包含项目集合的简单表单。就像这里描述的一样: http://symfony.com/doc/current/cookbook/form/form_collections.html.
问题是当我添加新元素(或多个元素)而不触及其中的任何内容(不更改他们的输入)时,我得到一个空集合。
我想获得一个添加元素的集合,而不管它们的内容。即使有字段是空的也可以。
在我提交表单后,我有:
var_dump($request->get('my_form_name'));
/* dump result:
array (size=19)
...
'partners' =>
array (size=1)
0 =>
array (size=2)
'fullname' => string '' (length=2)
'manager' => string '' (length=0)
...
*/
var_dump($form->getData()->getPartners());
// EMPTY!!! WTF? I expect an array of 1 element of Partner class which fields are set to '' and ''
另一方面,如果设置了一些东西,那就没问题了:
var_dump($request->get('my_form_name'));
/* dump result:
array (size=19)
...
'partners' =>
array (size=1)
0 =>
array (size=2)
'fullname' => string ' NAME HERE ' (length=2)
'manager' => string '' (length=0)
...
*/
var_dump($form->getData()->getPartners());
// ok, we have an array of 1 element which is an object of Partner class
任何想法如何摆脱这个错误?
更新
合作伙伴的类映射为:
Bundle\Entity\Partner:
...
fields:
fullname:
type: string
lenght: 255
nullable: True
manager:
type: string
lenght: 255
nullable: True
manyToOne:
owner:
targetEntity: Step2
inversedBy: partners
joinColumn:
name: owner_id
referencedColumnName: id
字段partners 被添加到collection 等collection 实体的表单中,其中allow_add、allow_delete、by_reference 设置为false
【问题讨论】:
-
您是否将“合作伙伴”类与您的表单相关联?如果是,您的“合作伙伴”实体类的“全名”属性上有哪些注释?
-
我更新了我的问题以提供更多信息
-
你能显示你的表单代码吗?看起来您设置了
mapped => false选项。 -
请提供生成表单的代码。