Bonjour à tous!!!
Voila je travailles sur un projet sous Symfony et je rencontre un problème. En effet j'execute une action dans un de mes controller jusqu'ici aucun problème mais vu que la base de données est assez complexe je dois executer des actions récursive. Du coup au sein de l'action de mon controller je fais appel à une fonction récursive pour pouvoir traiter des données. Mais mon problème c'est que je n'arrive pas à débuguer mes variables au sein de ma fonction récusive... Car dans l'action du controller aucun problème je peux faire autant de var_dump que je veux cela fonctionne mais dans la fonction récusrsive rien ne fonctionne. Je vous montre mon code.
Le code de l'action:
Et le code de ma fonction récursive:
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
49
50
51 public function duppliqueDepartAction($ugpef,$idbranchement,$iddepart) //copie armoire (pef,id_armoire,depart_a_affecter) { $em = $this->getDoctrine()->getManager (); $armoire=$em->getRepository('gideBundle:Armoire')->find($idbranchement); //dump($armoire); $newarm=new ArmoireFille();//On créé une nouvelle armoire $idBr= $this->getDoctrine()->getManager () ->getRepository('gideBundle:ArmoireFille') ->MaxId(); $newarm->idBranchement=($idBr[0]["id"]+1); //On copie les propriétés de l'armoire sélectionné dans la nouvelle $newarm->pk=$armoire->pk; $newarm->mainteneur=$armoire->mainteneur; $newarm->satel=$armoire->satel; $newarm->group=$armoire->group; $newarm->sourceEDFs=$armoire->sourceEDFs; $newarm->code_mire=$armoire->code_mire; $newarm->chassis=$armoire->chassis; $newarm->niveau=$armoire->niveau; $newarm->intitule=$armoire->intitule; $newarm->designation=$armoire->designation; $newarm->is_quai=$armoire->is_quai; $newarm->lignes=$armoire->lignes; $newarm->edifices=$armoire->edifices; $em->persist($newarm); $em->flush(); //fin création armoire $this->copieAmoireFilleRecusivefunction($idbranchement,$newarm);//appel fonction $newdep=$this->getDoctrine()->getEntityManager()->getRepository('gideBundle:Depart')->find($iddepart);//on cherche le départ ou l'on veux affecter l'armoire $newcable=new Cable();//on créé un cable echo "1"; $branc=$this->getDoctrine()->getEntityManager()->getRepository('gideBundle:Branchement')->find($newarm->idBranchement);//On cherche l'a nouvelle amoire copié $idcab= $this->getDoctrine()->getManager () ->getRepository('gideBundle:Cable') ->MaxIdCable(); //on récupère le dernier id du cable $newcable->id=($idcab[0]["id"]+1); //On donne un nouvel id au nouveau cable echo "2"; $newcable->branchements=$branc;//On branche la nouvelle armoire copié sur le nouveau cable echo "3"; $newcable->addDepart($newdep);//On connecte le nouveau cable au nouveau cable $em->persist($newcable); $em->flush();//fin création return $this->redirect($this->generateUrl("saisie_depart", array( "ugpef"=>$ugpef, "id"=>$iddepart."D"))); }
Voila je n'ai plus trop de solution... Si quelqu'un pouvait m'aider je l'en remercie d'avance!!
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
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189 public function copieAmoireFilleRecusivefunction($idbranchement,$newarm) { $em = $this->getDoctrine()->getManager(); $list1 = $this->getDoctrine()->getManager () ->getRepository('gideBundle:Depart') ->finddepartniveau1($idbranchement); //on prends les départs de l'armoire (mais que ceux de niveau 1 //var_dump($list1); foreach($list1 as $l)//Parcours des départs { $anciendepart=$em->getRepository('gideBundle:Depart')->find($l['idDepart']);//On récupère le départ avec son id $depart=new Depart();//On créé un départ $id= $this->getDoctrine()->getManager () ->getRepository('gideBundle:Depart') ->MaxIdDepart(); //On récupère le derniers id du départ pour en créer un //On recopie les propriété du départ dans le nouveau $depart->idDepart=($id[0]["id"]+1) ; $depart->setArmoires($newarm); //On associe le dpéart de niveau un avec la nouvelle armoire $depart->niveau=$anciendepart->niveau ; $depart->code_mire=$anciendepart->code_mire ; $depart->intitule=$anciendepart->intitule ; $depart->comptage=$anciendepart->comptage ; $depart->designation=$anciendepart->designation ; //$depart->intensites=$anciendepart->intensites ; $depart->magneto_phase=$anciendepart->magneto_phase ; $depart->codeequipement=$anciendepart->codeequipement ; $depart->cellule=$anciendepart->cellule ; $depart->monoTri=$anciendepart->monoTri ; $depart->puissance=$anciendepart->puissance ; $depart->fu=$anciendepart->fu ; $depart->reglage_phase=$anciendepart->reglage_phase ; $depart->reglage_neutre=$anciendepart->reglage_neutre ; $depart->neutre=$anciendepart->neutre ; $depart->serie=$anciendepart->serie ; $depart->section=$anciendepart->section ; $depart->depart=$anciendepart->depart ; $depart->edf=$anciendepart->edf ; $depart->delestable=$anciendepart->delestable ; $depart->perm=$anciendepart->perm ; $depart->a2=$anciendepart->a2 ; $depart->demande=$anciendepart->demande ; $depart->demandeBranchement=$anciendepart->demandeBranchement ; $depart->observation=$anciendepart->observation ; $depart->vers=$anciendepart->vers ; $depart->source1=$anciendepart->source1 ; $depart->simultaneite=$anciendepart->simultaneite ; $depart->supprime=$anciendepart->supprime ; $depart->differentiel=$anciendepart->differentiel ; $depart->reglageDiff=$anciendepart->reglageDiff ; $depart->motorisationDJ=$anciendepart->motorisationDJ ; $depart->borne1=$anciendepart->borne1 ; $depart->borne2=$anciendepart->borne2 ; $depart->borne3=$anciendepart->borne3 ; $depart->borne4=$anciendepart->borne4 ; $depart->niveau1=$anciendepart->niveau1 ; $depart->niveau2=$anciendepart->niveau2 ; $depart->niveau3=$anciendepart->niveau3 ; $depart->niveau4=$anciendepart->niveau4 ; $depart->chassis=$anciendepart->chassis ; $depart->idTypeConsoms=$anciendepart->idTypeConsoms ; $depart->CodeGMAOs=$anciendepart->CodeGMAOs ; $depart->materiel=$anciendepart->materiel ; $depart->responsable=$anciendepart->responsable ; $depart->ps=$anciendepart->ps ; $depart->pms=$anciendepart->pms ; if(!empty($anciendepart->intensites)) //on vérifie si le départ possède une itensité { $ancieninten=$anciendepart->intensites; //On récupère l'intensité du départ $intensitedep=new IntensiteDepart();//on créé une nouvelle intensité $id= $this->getDoctrine()->getManager () ->getRepository('gideBundle:Depart') ->MaxIdIntensite(); //Récupère le dernier id de la table intensitédepart //copie l'intensité dans la nouvelle $intensitedep->idIntensite=($id[0]["id"]+1); $intensitedep->ph1=$ancieninten->ph1; $intensitedep->ph2=$ancieninten->ph2; $intensitedep->ph3=$ancieninten->ph3; $intensitedep->n=$ancieninten->n; $intensitedep->date_releve=$ancieninten->date_releve; $em->persist($intensitedep); $em->flush();//fin création intensité $depart->intensites=$intensitedep; //dans le nouveau départ on lui met la nouvelle intensité } $em->persist($depart); $em->flush();//fin création départ if(!empty($anciendepart->cables))//on vérifie si le départ possède un ou des cables { foreach($anciendepart->cables as $c)//pour chaques cables trouvés { $cable=new Cable();//On créé un nouveau cable $idcab= $this->getDoctrine()->getManager () ->getRepository('gideBundle:Cable') ->MaxIdCable(); //On récupère le derniers id des cables //On copie les propriétés de l'ancien cable au nouveau $cable->id=($idcab[0]["id"]+1) ; $cable->designation=$c->designation; $cable->numCable=$c->numCable; $cable->addDepart($depart); $cable->longCable=$c->longCable; $cable->section=$c->section; $cable->responsable=$c->responsable; if(!empty($cable->branchements)) { $bracncien=$this->getDoctrine()->getEntityManager()->getRepository('gideBundle:Depart')->getArmoireFillecable($c->id);//On récupère l'armoire fille du cable if(!empty($bracncien))//si nous avons une armoire fille { foreach($bracncien as $br) { $branchement=new Branchement();//On créé un nouveau branchement ou une armoire ou un consommateur $idbr= $this->getDoctrine()->getManager () ->getRepository('gideBundle:Depart') ->MaxIdBrancheemnt(); //On récupère le derniers id des branchements //On copie le banchement dans le nouveau $branchement->idBranchement=($idbr[0]["id"]+1) ; $branchement->chassis=$br['chassis']; $branchement->niveau=$br['niveau']; $branchement->intitule=$br['intitule']; $branchement->designation=$br['designation']; $branchement->is_quai=$br['is_quai']; $branchement->lignes=$br['lignes']; $branchement->edifices=$br['edifices']; $branchement->responsable=$br['responsable']; // $cable->branchements=$branchement; //$em->persist($branchement); // $em->flush();//fin de création du branchement $armoire=$em->getRepository('gideBundle:Armoire')->find($br['idbranchement']); dump($armoire); // \Doctrine\Common\Util\Debug::dump($armoire); if(!empty($armoire)){ //exit(); $newarm=new ArmoireFille();//On créé une nouvelle armoire $idBr= $this->getDoctrine()->getManager () ->getRepository('gideBundle:ArmoireFille') ->MaxId(); $newarm->idBranchement=($idBr[0]["id"]+1); //On copie les propriétés de l'armoire sélectionné dans la nouvelle $newarm->pk=$armoire->pk; $newarm->mainteneur=$armoire->mainteneur; $newarm->satel=$armoire->satel; $newarm->group=$armoire->group; $newarm->sourceEDFs=$armoire->sourceEDFs; $newarm->code_mire=$armoire->code_mire; $newarm->chassis=$armoire->chassis; $newarm->niveau=$armoire->niveau; $newarm->intitule=$armoire->intitule; $newarm->designation=$armoire->designation; $newarm->is_quai=$armoire->is_quai; $newarm->lignes=$armoire->lignes; $newarm->edifices=$armoire->edifices; $em->persist($newarm); $em->flush(); //fin création armoire $cable->branchements=$newarm->idBranchement; $this->copieAmoireFilleRecusivefunction($br['idbranchement'],$newarm);//appel récursif } else{ $cable->branchements=$branchement; } $em->persist($branchement); $em->flush();//fin de création du branchement } } } $em->persist($cable); $em->flush();//fin de création du cable } } }//fin parcours des départs }
Partager