Ajouter dans un formulaire une liste d'entités n'appartenant pas à la classe de ce formulaire en Symfony

Ajouter dans un formulaire une liste d'entités n'appartenant pas à la classe de ce formulaire en Symfony
par Rémi Leclerc, le 13/09/2015

Si vous souhaitez ajouter une liste d'entités dans un formulaire Symfony mais que cesdites entités ne sont pas une propriété de l'entité utilisée dans votre formulaire, vous pouvez utiliser la classe ObjectChoiceList.

Ce peut par exemple être utilisé dans le cas où votre formulaire affiche une liste de catégories mais que vous souhaitez préalablement que l'utilisateur choisisse le parent de la catégorie dans une autre liste.

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        //...
        ->add(
            'categorieParente',
            'choice',
            array(
                'choice_list' => new ObjectChoiceList(
                    $this->categorieParenteManager->findAll(),
                    'nom',
                    array(),
                    null,
                    'id'
                ),
                'mapped' => false
            )
        )
        //...
    ;
}

Le code ci-dessus affichera une liste avec l'ensemble des catégories parentes avec comme libellé de chaque option le nom de la catégorie parente et comme valeur de l'attribut value son ID.