无法将EntityType与FormFactory一起使用

时间:2018-01-09 16:36:33

标签: php forms symfony

我目前正在与 Symfony 合作,但我遇到了表单问题。

我有一个名为Categories的实体。在我的表单中,我要求选择与我的变量gamme对应的属性$gamme的所有类别。

$categories是一个包含类别的数组,如预期的那样。我希望能够在表单中选择一个类别。

但是显示器,我只有一个选择。

你知道问题出在哪里吗?

这是我的代码:


public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('gamme', ChoiceType::class, array('choices' => array('AUT' => 'AUT', 'FFE' => 'FFE', 'FSI' => 'FSI', 'FSE' => 'FSE', 'FME' => 'FME')))
            ->add('designation')
            ->add('description')
            ->add('critereRech1')
            ->add('critereRech2')
            ->add('critereRech3')
            ->add('critereRech4')
            ->add('taxonomie')
            ->add('articleAssocie1')
            ->add('articleAssocie2')
            ->add('articleAssocie3')
            ->add('qteMaxCde')
            ->add('publication')
            ->add('codeArticle');
        $builder->get('gamme')->addEventListener(
            FormEvents::POST_SUBMIT,
            function (FormEvent $event){

$form = $event->getForm()->getParent(); $gamme = $event->getData(); $this->addCatgeorieField($form, $gamme); } ); } /** * Rajoute un champs catégorie au formulaire * @param FormInterface $form * @param $gamme */ private function addCatgeorieField(FormInterface $form, $gamme){ $categories = $this->em->getRepository('AppBundle:Categories')->findBy(["gamme" => $gamme]); dump($categories); $builder = $form->getConfig()->getFormFactory()->createNamedBuilder( 'codeCategorie', EntityType::class, null, [ 'class' => 'AppBundle\Entity\Articles', 'placeholder' => 'sélectionnez la catégorie', 'required' => false, 'choices' => $categories, 'auto_initialize' => false ] ); $builder->addEventListener( FormEvents::POST_SUBMIT, function (FormEvent $event){ dump($event->getForm()); } ); $form->add($builder->getForm()); } </code></pre>

这是我目前的结果。但是,除了一个类别,我应该有34个类别:

Image

这是dump($ categories)的结果: Image

1 个答案:

答案 0 :(得分:0)

I find my mistake. In this code :



[

           'class' => 'AppBundle\Entity\Articles',

           'placeholder' => 'sélectionnez la catégorie',

           'required' => false,

           'choices' => $categories,

           'auto_initialize' => false

       ]

At 'class', instead to write 'Articles' I have to write 'Categories' because I want display a different instance of my entity Categories.

Thank you all for your answers.