Опция формы обязательна И не обязательна - PullRequest
0 голосов
/ 12 ноября 2018

У меня большая проблема, и после нескольких часов исследований я не нашел ответа ...

У меня есть 2 формы , и я звоню один в другой.
Когда я даю своей форме опцию «entity_manager», у меня появляется следующее сообщение об ошибке:

Опция "entity_manager" не существует.

НО , когда я удаляю эту опцию, у меня есть следующее:

Отсутствует обязательная опция "entity_manager".

Вот мой код:

CandidatureController.php

$candidature = new Candidature();
$formCandidature = $this->createForm('PDF\RecrutementBundle\Form\CandidatureType', $candidature, array('entity_manager' => $entityManager, 'form' => 'candidature'));
$formCandidature->handleRequest($request);
$formOrientation = $this->createForm('PDF\RecrutementBundle\Form\CandidatureType', $candidature, array('entity_manager' => $entityManager, 'form' => 'orientation'));

CandidatureType.php

public function buildForm(FormBuilderInterface $builder, array $options) {
    $this->em = $options['entity_manager'];
    $form = $options['form'];

    if ($form == 'candidature') {
        $builder->add('caCommentairesituation', TextareaType::class)
                ->add('caCommentaire', TextareaType::class)
                ->add('profils', CollectionType::class, array('entry_options' => ['entity_manager' => $this->em], 'entry_type' => ProfilType::class,'allow_add' => true, 'allow_delete' => true,'prototype' => true))
                ->add('fkMobilitegeographique', EntityType::class, array('class'=>'PDF\RecrutementBundle\Entity\Mobilitegeographique', 'choice_label'=>'mgLibelle'))
                ->add('fkSituationprofessionnelle',EntityType::class, array('class'=>'PDF\RecrutementBundle\Entity\Situationprofessionnelle', 'choice_label'=>'spLibelle'))
                ->add('fkTypecandidature', EntityType::class, array('class'=>'PDF\RecrutementBundle\Entity\Typecandidature', 'choice_label'=>'tcLibelle'))
                ->add('fkProvenance', EntityType::class, array('class'=>'PDF\RecrutementBundle\Entity\Provenance', 'choice_label'=>'prLibelle'));
    } else {
        $builder->add('orientations', CollectionType::class, array('entry_options' => ['entity_manager' => $this->em], 'entry_type' => OrientationType::class, 'allow_add' => true, 'allow_delete' => true, 'prototype' => true));
    }
}

public function configureOptions(OptionsResolver $resolver) {
    $resolver->setDefaults(array(
        'data_class' => 'PDF\RecrutementBundle\Entity\Candidature',
        'form' => false
    ));
    $resolver->setRequired('entity_manager');
}

OrientationType.php

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->add('orLibelle', TextType::class)
            ->add('orDescription', TextType::class)
            ->add('orArchive')
            ->add('orDiffusion')
            ->add('fkCategorieorientation', EntityType::class, array('class'=>'PDF\RecrutementBundle\Entity\CategorieOrientation', 'choice_label'=>'coLibelle'))
            ->add('candidatures', CollectionType::class, array('entry_type' => CandidatureType::class, 'allow_add' => true, 'allow_delete' => true));
}

public function configureOptions(OptionsResolver $resolver) {
    $resolver->setDefaults(array(
        'data_class' => 'PDF\RecrutementBundle\Entity\Orientation'
    ));
}

Так, как я могу решить это?

PS : Извините за мой плохой английский.

1 Ответ

0 голосов
/ 12 ноября 2018

В OrientationType.php тип записи для вашего "Collectionatype" типа CandidatureType для CollectionType - это вы, но вы не определяете 'entry_options', какие параметры вы передаете своему типу записи ...

попробуйте заменить это

 ->add('candidatures', CollectionType::class, array('entry_type' => CandidatureType::class, 'allow_add' => true, 'allow_delete' => true))

с этим:

  ->add('candidatures', CollectionType::class, array(
    'entry_type' => CandidatureType::class, 
    'entry_options' => [
       'entity_manager' => $this->em
    ],
    'allow_add' => true, 
    'allow_delete' => true)
);

Конечно, вам нужно сначала определить $ em как entity_manager в OrientationType, так же, как вы определили его в CandidatureType, с setRequired () должно быть просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...