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:
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 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 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
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(), )); }
mais ça ne marche pas est ce qu'il y a une idée pour le corriger.
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) ; }, )) ; }
Merci
Partager