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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
//l'action "show" contient l'affichage du chapitre (url: /1/show) , la récupération de l'id et l'affichage de form
public function showAction($id)
{
$message= " Aucune information existe";
$ques= new ReponsesQues(); // l'entité qui contient tous les réponses aux questions
$em = $this->getDoctrine()->getManager();
// affichage de tous les informations du chapitre ayant comme id =1
$info = $em->getRepository('ChapitresBundle:Chapitres')->find($id);
//création du form pour faire l'ajout de la réponse
$form=$this->createForm(new ReponsesQuesType(), $ques);
$entity = $em->getRepository('ChapitresBundle:Chapitres')->findBy(array('id'=> $id));
foreach($entity as $IdChps) {
// pour récupérer l'id du chapitre
$idChapitres=$IdChps->getId();
/* var_dump( $idChapitres); --> il affiche array[0] : int(1) */
//ici la création de la variable session et stocké de dans l'id du chapitre (dans notre cas l'id=1)
$this->get('session')->set('infoChapitres', $idChapitres);
}
if (!$entity ) {
return $this->render('ChapitresBundle:Default:404.html.twig', array('info' => $message));
}
return $this->render('MissionsBundle:ReponsesQues:show.html.twig', array(
'entity' => $info,
'form' => $form->createView(),
'error' =>'',
));
}
//l'action "create" permet de récupérer l'objet ReponsesQues crée et stocké dans BD en modifiant quelque variable.
public function createAction(Request $request)
{
// création du tableau pour stocker les ids des questions par chapitres
$infQues= array();
// récupérer la date 'now'
$dateresp=new \DateTime();
$entity = new ReponsesQues();
$form= $this->createForm(new ReponsesQuesType(), $entity );
$form->handleRequest($request);
/* var_dump($this->get('session')->get('infoChapitres')); --> il affiche array[0]: int(1)
var_dump($this->get('session')->get('infoProjet')); --> il affiche array[0]; int(4)
=> note: ces ids existent dans ma BD
*/
$em = $this->getDoctrine()->getManager();
// afficher tous les informations du chapitre selon l'id qui se trouve dans la variable session "infoChapitres", dans ce cas id=1 (les informations sont bien affiché)
$chapitres= $em->getRepository('ChapitresBundle:Chapitres')->find($this->get('session')->get('infoChapitres'));
// récupération des questions en utilisant la variable de la relation entre l'entité 'Questions' & 'Chapitres'
$x=$chapitres->getChpQuestions();
/* ce traitement permet de stocker les ids des questions par chapitre dans un tableau */
$i=0;
foreach ($x as $Tousquestions)
{
$infQues[$i++]=$Tousquestions->getId();
}
// var_dump $infQues); --> il affiche array[0]: int(1) car ce chapitre(id=1) contient une seule question (id=1)
if ($form->isValid())
{
// le probléme se trouve ici il n'arrive a lire ce boucle, j'ai faire un petit test dedans avec une chaîne des caractères en utilisant la fonction "var_dump('hello')".
//Mais ce traitement ne sera pas affiché !
$pourcentageN=$entity->getNivConformite();
$entity->setNivEnPourcentage($pourcentageN);
$entity->setDateReponse($dateresp);
// ajouter l'id du projet
$entity->setProjet($this->get('session')->get('infoProjet'));
// l'ajout de tous les ids des questions (car un chapitre peut contenir plus que une question (ICI la relation 1..*))
foreach ($x as $qu)
{
// $entity->setQuestions($infQues);
$qu->setQuestions($infQues);
}
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->render('MissionsBundle:ReponsesQues:show.html.twig', array(
'entity' => $chapitres,
'form' => $form->createView(),
'error' =>'',
));
}
return $this->render('MissionsBundle:ReponsesQues:show.html.twig', array(
'entity' => $chapitres,
'form' => $form->createView(),
'error' =>'1',
));
} |
Partager