我目前正在与 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个类别:
这是dump($ categories)的结果:
答案 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.