Bonjour à tous,
Je suis sur Symfony 1.4 et Doctrine.
J'ai un formulaire assez complexe qui fait appel à plusieurs sous formulaires.
Le formulaire général permet d'enregistrer un bien immobilier et ses caractéristiques.
Le problème se situe sur la notion de propriétaire, d'après les exigences du client, un bien peut avoir un ou 2 propriétaire(s).
J'ai donc un formulaire de base qui contient un sous-formulaire pour le 1er propriétaire et un bouton "Ajouter un 2ème propriétaire" qui fait un appel ajax pour rajouter à la page un nouveau sous-formulaire de type propriétaire.
L'ensemble fonctionne plutôt bien, sauf dans un cas, quand je saisie uniquement un seul propriétaire, je retrouve quand même dans la table bien immobilier la clé étrangère "proprietaire_id_2" qui est remplie, et une ligne vide dans la table propriétaire correspondant à ce 2ème propriétaire.
Alors que justement le but du bouton "ajouter un 2ème proprietaire" c'est de ne pas charger la base de proprietaire n°2 tous vides !
J'ai essayé de manipuler le schema.yml et les class.php mais sans succès, je ne vois vraiment pas comment faire...
Je sais pas si mon message est clair, n'hésitez pas à me demander des précisions ou des poritions de code si nécessaire.
Merci pour vos lumières !
Voici la partie de mon schema yml qui concerne ces tables "cedant" (=bien immobilier) et proprietaire :
cli16 --*
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
190
191 Cedant: actAs: Timestampable: ~ Sluggable: fields: [titre] columns: id: type: integer primary: true autoincrement: true titre: type: string(100) notnull: true reference: type: string(10) description: type: string(3000) modalite: type: string(254) logement: type: boolean default: 0 prix: type: string(100) secteur_act_id: type: integer secteur_act_2_id: type: integer type_ent_id: type: integer origine_contact_id: type: integer antenne_id: type: integer secteur_geo_id: type: integer commune_id: type: integer visible_site_web: type: boolean default: true date_sortie: type: timestamp sortie_positive: type: boolean default: false type_cession_id: type: integer commentaire_cession: type: string(3000) proprietaire_id: type: integer proprietaire_2_id: type: integer photo: type: string(255) visible_photo: type: boolean default: 0 user_id: type: integer relations: Antenne: local: antenne_id foreign: id onDelete: CASCADE SecteurGeo: local: secteur_geo_id foreign: id onDelete: CASCADE Activite1: class: SecteurAct local: secteur_act_id foreign: id onDelete: CASCADE Activite2: class: SecteurAct local: secteur_act_2_id foreign: id onDelete: CASCADE TypeEntreprise: local: type_ent_id foreign: id onDelete: CASCADE OrigineContact: local: origine_contact_id foreign: id onDelete: CASCADE Commune: local: commune_id foreign: id onDelete: CASCADE TypeCession: local: type_cession_id foreign: id onDelete: CASCADE Proprietaire1: class: Proprietaire local: proprietaire_id foreign: id foreignAlias: Proprietaire1 type: one onDelete: CASCADE Proprietaire2: class: Proprietaire local: proprietaire_2_id foreign: id foreignAlias: Proprietaire2 onDelete: CASCADE Proprietaire: actAs: [Timestampable] columns: id: type: integer primary: true autoincrement: true nom: type: string(100) prenom: type: string(100) sexe_id: type: integer date_naiss: type: timestamp adresse1: type: string(200) adresse2: type: string(200) commune_id: type: integer tel: type: string(15) portable: type: string(15) email: type: string(100) situation_matrimoniale_id: type: integer regime_marital_id: type: integer nb_enfant: type: integer age_enfant: type: string(200) nb_pers_charge: type: integer situation_prof_id: type: integer personne_hand: type: boolean default: 0 benef_minima: type: boolean default: 0 formation_txt: type: string(1000) formation_id: type: integer categ_socio_id: type: integer relations: Commune: local: commune_id foreign: id onDelete: CASCADE SituationMatrimoniale: local: situation_matrimoniale_id foreign: id onDelete: CASCADE RegimeMarital: local: regime_marital_id foreign: id onDelete: CASCADE SituationProf: local: situation_prof_id foreign: id onDelete: CASCADE CategSocio: local: categ_socio_id foreign: id onDelete: CASCADE Formation: local: formation_id foreign: id onDelete: CASCADE Sexe: local: sexe_id foreign: id onDelete: CASCADE
Partager