Bonjour,

Je débute complètement sur Symfony2 et je bloque sur des problemes de base. J'ai effectué une rapide recherche ici et surtout des recherches sur google mais j'ai pas encore réussi à résoudre mon soucis...

Je vous expose mon problème. J'ai une relation many to many entre deux entités etudiant et seminaire et une association inscrit_seminaire entre ces deux entités et qui porte un attribut date_inscrit.

Un étudiant doit connecté pour faire l'inscription, donc je veux recuperer l'id de l'etudiant connecté pour qu je puisse chercher les seminaires libres dans lequels cet étudiants n'est pas encore inscrit.

je veux mettre dans le formulaire inscritseminaireType une choice liste qui contient que les seminaires libres

alors j'ai réaliser une requêtte qui retourne un array des entités seminaires. et voilà le démarche de mon travail.

SminaireRepository.php:
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
class SeminaireRepository extends EntityRepository
{
    public function getSeminaireLibre ($id)
    {
 
        $stmt = $this->getEntityManager()
                   ->getConnection()
                   ->prepare('SELECT * FROM SEMINAIRE 
                       WHERE ID NOT IN (SELECT ID_SEM FROM INSCRITSEMIN WHERE ID_ET=:id_et)
                      ');
      $stmt->bindValue('id_et', $id);
      $stmt->execute();
      return $stmt->fetchAll();
    }
}
et ceci dans le 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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public function createAction(Request $request) {
        $entity = new InscritSemin();
        $iduser = $this->get('security.context')->getToken()->getUser()->getIdentifiant();
 
        $form = $this->createForm(new InscritSeminType($iduser), $entity);
        $form->bind($request);
 
        if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $etudiant = $em->getRepository('EspritUserBundle:EspEtudiant')
                    ->getEtudiantCourant($iduser);
 
 
                $entity->setEtudiant($etudiant[0]);
                    $em->persist($entity);
                    $em->flush();
 
 
            return $this->redirect($this->generateUrl('inscritsemin_show', array('id' => $entity->getId())));
        }
 
        return $this->render('EspritSeminaireBundle:InscritSemin:new.html.twig', array(
                    'entity' => $entity,
                    'form' => $form->createView(),
                ));
    }
 
    /**
     * Displays a form to create a new InscritSemin entity.
     *
     */
    public function newAction() {
        $entity = new InscritSemin();
        $iduser = $this->get('security.context')->getToken()->getUser()->getIdentifiant();
 
        $form = $this->createForm(new InscritSeminType($iduser), $entity);
 
 
 
        return $this->render('EspritSeminaireBundle:InscritSemin:new.html.twig', array(
                    'entity' => $entity,
                    'form' => $form->createView(),
                ));
    }
et dans le InscritSeminType.php:

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
private $iduser;
 
    public function __construct($iduser)
    {
        $this->iduser = $iduser;
    }
 
    public function buildForm(FormBuilderInterface $builder, array $options) {
 
        $builder
                ->add('seminaire','entity', array(
                    'class' => 'EspritSeminaireBundle:Seminaire',
                'query_builder' => function($repository)use ($id) {
                    return $repository->getSeminaireLibre('id')
                        ->setParameter('id', $id)
                            ;
                },                    ))
 
 
                ;
    }
mais ça ne marche pas est ce qu'il y a une idée pour le corriger.
Merci