Bonjour,

Dans un formulaire, je fais appel à une méthode d'un repository de cette manière :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
            ->add('localite','entity', array('class'=>'Hotels\GestionAnnoncesBundle\Entity\Localite',
                                             'query_builder' => function(LocaliteRepository $er) use ($region)
                                                                  {
                                                                   return $er->getLocalitesByElem($region->getId(), 'region');
                                                                  }, 
                                             'required' => false))
        ;
Voici la méthode que j'ai écrite pour une question de ré-utilisabilité :

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 public function getLocalitesByElem($idElemInit, $typeElemInit)
	{	
		$em = $this->getEntityManager();
 
    switch($typeElemInit)
     {
      case 'commune':
        $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Commune')->find($idElemInit);
      break;
 
      case 'province':
        $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Province')->find($idElemInit);
      break;
 
      case 'departement':
        $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Departement')->find($idElemInit);
      break;
 
      case 'region':
       $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Region')->find($idElemInit);
      break;
 
      default:
        $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Pays')->find($idElemInit);
      break;
     }
 
    if($typeElemInit == 'commune')
     {
      $localites = $obj->getLocalites();      
     }
    else
     {      
      $communes = $obj->getCommunes();
 
      $localites = array();
 
      foreach ($communes as $com)
       {
        foreach ($com->getLocalites() as $locByCom)
         {
          $localites[] = $locByCom;
         }        
       }
     }
 
    return $localites;
	}
Cependant, j'obtiens cette erreur :

Expected argument of type "Doctrine\ORM\QueryBuilder", "array" given
Comment pourrais-je exploiter mon array retourné dans mon formulaire pour assigner le tableau d'objets au champ 'localite'?

Merci d'avance pour votre aide.