Bonjour,
Je m'excuse d'avance si mon problème serai débile mais j'arrive pas a trouvé une solution, sachant que j'ai essayé de suivre ce tutoriel a la lettre :
http://nibsirahsieu.wordpress.com/20...embedded-form/
Mon problème est le suivant, je travail sur l'administration d'un site de booking (réservation des chambres d'hotels).
là ou je bloque est lors de l'ajout d'une nouvelle chambre (modification aussi), pendant laquel je dois récupéré les "saisons" depuis l'hotel en question, et pouvoir creer des enregistrement des saisons + les tarifs dans une nouvelle tables en même temps que l'ajout de la chambre.
voici en ce qui suit mon schema de la base de donnée.
voici le code que j'ai ajouté dans la classe ChambreForm.class.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
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 Chambre: connection: doctrine tableName: chambre columns: id_chambre: type: integer(4) fixed: false unsigned: false primary: true autoincrement: true id_etb: type: integer(4) fixed: false unsigned: false primary: false notnull: true autoincrement: false id_type: type: integer(4) fixed: false unsigned: false primary: false notnull: false autoincrement: false id_pension: type: integer(4) fixed: false unsigned: false primary: false notnull: false autoincrement: false nom_chambre: type: string(30) fixed: false unsigned: false primary: false notnull: true autoincrement: false desc_chambre_fr: type: string() fixed: false unsigned: false primary: false notnull: true autoincrement: false desc_chambre_en: type: string() fixed: false unsigned: false primary: false notnull: false autoincrement: false desc_chambre_es: type: string() fixed: false unsigned: false primary: false notnull: false autoincrement: false desc_chambre_it: type: string() fixed: false unsigned: false primary: false notnull: false autoincrement: false nombre: type: integer(1) fixed: false unsigned: false primary: false default: '1' notnull: false autoincrement: false ch_pax: type: integer(4) fixed: false unsigned: false primary: false notnull: true autoincrement: false lit_sup: type: integer(1) fixed: false unsigned: false primary: false default: '0' notnull: false autoincrement: false prix_lit_sup: type: float() fixed: false unsigned: false primary: false notnull: false autoincrement: false commision: type: float() fixed: false unsigned: false primary: false notnull: false autoincrement: false image: type: string(120) fixed: false unsigned: false primary: false notnull: false autoincrement: false relations: Etablissement: local: id_etb foreign: id_etb type: one Chtype: local: id_type foreign: id_type type: one Pension: local: id_pension foreign: id_pension type: one Chsaison: local: id_chambre foreign: id_chambre type: many Chservices: local: id_chambre foreign: id_chambre type: many Chsaison: connection: doctrine tableName: chsaison columns: id_saison: type: integer(4) fixed: false unsigned: false primary: true autoincrement: true id_chambre: type: integer(4) fixed: false unsigned: false primary: false notnull: true autoincrement: false date_debut: type: date(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false date_fin: type: date(25) fixed: false unsigned: false primary: false notnull: true autoincrement: false prix: type: float() fixed: false unsigned: false primary: false default: '0' notnull: false autoincrement: false relations: Chambre: local: id_chambre foreign: id_chambre type: one
et finalement voici l'erreur que j'ai :
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 <?php /** * Chambre form. * * @package Booking * @subpackage form * @author Badr HAKKARI - badr.hakkari@gmail.com * @version SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ */ class ChambreForm extends BaseChambreForm { public function configure() { $saisons = Doctrine_Core::getTable('Etbsaison') ->createQuery('s') ->select('s.date_debut, s.date_fin,s.prix') ->where('id_etb = ?', $this->getOption('id_etb')) ->execute(); if ($saisons->count() > 0) { $chsForms = new sfForm(); $lesSaisons = $this->getObject()->getChsaison(); if ($lesSaisons->count() == 0) { foreach ($saisons as $saison) { $chs = new Chsaison(); $chs->setChambre($this->getObject()); $chs->setDateDebut($saison->getDateDebut()); $chs->setDateFin($saison->getDateFin()); $chs->setPrix($saison->getPrix()); $lesSaisons[] = $chs; } } foreach ($lesSaisons as $key => $v) { $chsForm = new ChsaisonForm($v); $chsForms->embedForm('chsaison' . ($key + 1), $chsForm); $chsForms->widgetSchema['chsaison' . ($key + 1)]->setLabel('Saison: ' . ($key + 1)); } $this->embedForm('chsForms', $chsForms); $this->widgetSchema['chsForms']->setLabel('Les Saisons:'); } } public function addSaisons($key) { $saisons = new Chsaison(); $saisons->setChambre($this->getObject()); $this->embeddedForms['chsForms']->embedForm($key, new ChsaisonForm($saisons)); $this->embedForm('chsForms', $this->embeddedForms['chsForms']); } public function bind(array $taintedValues = null, array $taintedFiles = null) { if (isset($taintedValues['chsForms'])) { foreach ($taintedValues['chsForms'] as $key => $form) { if (false === $this->embeddedForms['chsForms']->offsetExists($key)) { $this->addSaisons($key); } } } parent::bind($taintedValues, $taintedFiles); } }
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Notice: Undefined index: chsForms in C:\wamp\www\projet\lib\form\doctrine\ChambreForm.class.php on line 56 Fatal error: Call to a member function offsetExists() on a non-object in C:\wamp\www\projet\lib\form\doctrine\ChambreForm.class.php on line 56
Partager