使用 Doctrine Proxies 而不是 Entities 的 Symfony Form Builder
Symfony Form Builder using Doctrine Proxies instead of Entities
我想知道为什么我的 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 Proxies 而不是我传入 FormBuilder 的实体:
Could not determine access type for property "myprop" in class "Proxies\__CG__\App\Entity\MyEntity": Neither the property "myprop" nor one of the methods "addMyprop()"/"removeMyprop()", "addMyprop()"/"removeMyprop()", "setMyprop()", "Myprop()", "__set()" or "__call()" exist and have public access in class "Proxies\__CG__\App\Entity\MyEntity".
使用最新的 Symfony 4.3 (4.3.5)
问题不在 FormBuilder 中,而是在实体中,因为它是使用复数名称导入的,而 Symfony 名称生成器试图调用单数方法,但只存在复数方法...
我想知道为什么我的 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 Proxies 而不是我传入 FormBuilder 的实体:
Could not determine access type for property "myprop" in class "Proxies\__CG__\App\Entity\MyEntity": Neither the property "myprop" nor one of the methods "addMyprop()"/"removeMyprop()", "addMyprop()"/"removeMyprop()", "setMyprop()", "Myprop()", "__set()" or "__call()" exist and have public access in class "Proxies\__CG__\App\Entity\MyEntity".
使用最新的 Symfony 4.3 (4.3.5)
问题不在 FormBuilder 中,而是在实体中,因为它是使用复数名称导入的,而 Symfony 名称生成器试图调用单数方法,但只存在复数方法...