Вложенная форма Symfony - PullRequest
       38

Вложенная форма Symfony

0 голосов
/ 26 сентября 2019

У меня есть пользовательский класс, имеющий отношение OneToOne с Applicant и Company, я хочу предложить зарегистрироваться как один из обоих.Чтобы сделать это, я сделал 3 формы: UserType (email), ApplicantType (firstName) и CompanyType (companyName).Согласно url, я сгенерирую ApplicantType или CompanyType для добавления к UserType.

Для передачи типа я использую

$form = $this->createForm(UserType::class, $user, ['data' => ['type' => $type]]);

, поэтому мой UserTypeполучает тип в $options и динамически добавляет

->add('applicant', ApplicantType::class) or ->add('company',CompanyType::class)

Я получаю сообщение об ошибке

The form's view data is expected to be an instance of class App\Entity\User, but is a(n) array. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) array to an instance of App\Entity\User.

В конце я хочу сделать следующее:после отправки создайте и скопируйте объект «Заявитель / Компания», который я присоединю к вновь созданному объекту «Пользователь».

1 Ответ

0 голосов
/ 26 сентября 2019

Это решили две вещи:

Данные, передаваемые в форму, должны быть

$form = $this->createForm(UserType::class, $user, ['typeOfUser' => $type]);

вместо

$form = $this->createForm(UserType::class, $user, ['data' => ['type' => $type]]);

Затем в formType добавить значение по умолчаниюдля ключа мы используем для передачи данных

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([ 
       'typeOfUser' => 'applicant'
    ]);
}
...