使用 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 名称生成器试图调用单数方法,但只存在复数方法...