Как добавить смешанные поля в CollectionType - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь добавить некоторые дочерние поля в запись CollectionType в моей форме.

My CollectionType является результатом ManyToMany (OneToMany<=>ManyToOne между 3 классами) изUtilisateur и ExtraData.

ExtraData класс содержит информацию о том, какой тип полей должен быть добавлен в форму.

Я думал, что установка entry_type в FormType::classПозвольте мне добавить любой тип дочерних полей, но похоже, что $builder->get('myCollection')->add('field', Type, $options) не добавляет мои несопоставленные поля в Collection

Вот мой код:

$builder->add('extraDataCollection', CollectionType::class, array(
    'mapped'=>false,
    'entry_type'=>FormType::class,
    'allow_add'=>false,
));

/** @var ExtraData $extraDatum */
foreach($extraData as $extraDatum) {
    if($extraDatum->getType() == 'text') {
        $builder->get('extraDataCollection')->add('datum-'.$extraDatum->getId(), TextType::class, array(
            'mapped'=>false,
            'required'=>$extraDatum->getIsObligatoire(),
            'label'=>$extraDatum->getLabel(),
        ));
    } elseif($extraDatum->getType() == 'url') {
        $builder->get('extraDataCollection')->add('datum-'.$extraDatum->getId(), UrlType::class, array(
            'mapped'=>false,
            'required'=>$extraDatum->getIsObligatoire(),
            'label'=>$extraDatum->getLabel(),
        ));
    } elseif(...) {...}
}

extraDataCollection нет детей, что я делаю не так?

...