我想知道为什么我的CollectionType不调用将外键设置为$ this的自定义addCollection函数(因此下次集合为空时)。
然后我发现了有关'by_reference'的信息,但这并不能解决问题,反而使情况更糟。
以我只是做的形式:
$builder->add('myprop', CollectionType::class, [
'label' => false,
'entry_type' => MyEntityType::class,
'entry_options' => [
'label' => false,
'new' => $new,
],
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false, // instead of not calling add it now throws an error
]);
并且MyEntityType只是另一个具有data_class集和其字段的类型
似乎是使用Doctrine代理而不是我的实体,当我收到错误消息时,我将其传递给FormBuilder:
无法确定类“ Proxies \ __ CG __ \ App \ Entity \ MyEntity”中属性“ myprop”的访问类型:属性“ myprop”或方法“ addMyprop()” /“ removeMyprop()”,“ addMyprop()” /“ removeMyprop()”,“ setMyprop()”,“ Myprop()”,“ __ set()”或“ __call()”存在,并且在类“ Proxies \ __ CG __ \ App \ Entity \”中具有公共访问权限MyEntity”。
使用最新的Symfony 4.3(4.3.5)
问题不在FormBuilder中,而是在Entity中,因为它是使用复数名称导入的,而Symfony名称生成器试图调用单数方法,但仅存在复数方法...