Bonjour à tous,

J'ai une entité "livre" qui contient un champ "langue", plus d'autres champs.
Pour ne pas mettre des km de code, je ne laisse que celui qui me semble important.
Je veux faire un formulaire de création, avec une liste déroulante qui contient toutes les langues, mais une seule fois chacune, d'où le distinct dans mon query builder, car je vais chercher les langues dans mon entité "livre", pour récupérer celles qui existent déjà.

A la ligne de mon controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
'form_livre' => $form_livre->createView(),
J'ai le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Warning: spl_object_hash() expects parameter 1 to be object, string given
Google étant mon ami, j'ai passé des heures de recherches, essayé plein de trucs tordus, sans succès.
Mon champ "langue" est défini en chaine, comment je peux retourner un objet ?

Donc là, j'ai simplifié au maximum mon code, et j'espère vore aide !

entité "livre" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
/**
 * @var string
 *
 * @ORM\Column(name="langue", type="string", length=200)
 */
private $langue;
controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$livre = new Livre();
$form_livre_builder = $this->get('form.factory')->createBuilder(livreType::class, $livre);
$form_livre_builder->add('langue', EntityType::class, array(
    'label'        => 'livre.formcreer.langue', 
    'placeholder'  => 'français',
    'class'        => 'testBundle:Livre',
    'choice_label' => 'langue',
    'multiple'     => false,
    'expanded'     => false,
    'query_builder' => function (EntityRepository $er) {
        return $er->createQueryBuilder('l')
            ->select('l.langue')
            ->distinct()
            ;
        },
    ))
;
$form_livre = $form_livre_builder->getForm();
 
return $this->render('testBundle:Visit:visit_livre_creer.html.twig', array(
    'form_livre' => $form_livre->createView()
));
Merci d'avance pour votre aide !