Symfony Form Builder использует Doctrine Proxy вместо сущностей - PullRequest
0 голосов
/ 31 октября 2019

Мне было интересно, почему мой CollectionType не вызывает пользовательскую функцию addCollection, которая устанавливает внешний ключ в $ this (и, таким образом, в следующий раз, когда коллекция пуста).

Затем я узнал о '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 и полями дляit

Кажется, что он использует Procties Doctrine вместо моей сущности, я передаю в FormBuilder, когда получаю сообщение об ошибке:

Не удалось определить тип доступа для свойства "myprop"в классе "Прокси \ __ CG __ \ App \ Entity \ MyEntity": ни свойство "myprop", ни один из методов "addMyprop ()" / "removeMyprop ()", "addMyprop ()" / "removeMyprop ()", "setMyprop () "," Myprop () "," __set () "или" __call () "существуют и имеют открытый доступ в классе" Прокси \ __ CG __ \ App \ Entity \ MyEntity ".

использование новейшей версии Symfony 4.3 (4.3.5)

1 Ответ

0 голосов
/ 04 ноября 2019

Проблема была не в FormBuilder, а в сущности, поскольку она была импортирована с использованием имен множественного числа, а генератор имен Symfony пытался вызвать метод единственного числа, но существовало только множественное число ...

...