Hello!
Après avoir faire de longue recherche sur notre ami GooGle, je sèche sur un problème avec le plugin ahDoctrineEasyEmbeddedRelationsPlugin.
Je possède 4 tables dont une qui permet de faire une relation n:n entre deux autres.
Mon schema se présente de cette forme (Il est issu d'un build-schema d'une base ORACLE...) :
Et donc après avoir suivis plusieurs tutoriels...J'en suis venu à configurer mes form class de cette sorte :
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 CHAMPS: connection: doctrine tableName: CHAMPS columns: champs_id: type: integer(8) fixed: false unsigned: false primary: true valeur: notnull: true type: string(45) fixed: false unsigned: false primary: false fk_nom_champs: notnull: true type: integer(8) fixed: false unsigned: false primary: false relations: NOM_CHAMPS: local: fk_nom_champs foreign: nom_champs_id type: one CHAMPS_TABLE: local: champs_id foreign: fk_champs_id type: many NOM_CHAMPS: connection: doctrine tableName: NOM_CHAMPS columns: nom_champs_id: type: integer(8) fixed: false unsigned: false primary: true is_organised: notnull: false type: boolean(1) fixed: false unsigned: false default: '0' primary: false nom: notnull: true type: string(45) fixed: false unsigned: false primary: false is_search: notnull: false type: boolean(1) fixed: false unsigned: false default: '0' primary: false relations: CHAMPS: local: nom_champs_id foreign: fk_nom_champs type: many TABLE: connection: doctrine tableName: TABLE columns: ressource_id: type: integer(8) fixed: false unsigned: false primary: true fk_base: notnull: false type: integer(8) fixed: false unsigned: false primary: false table_parent_id: notnull: false type: integer(8) fixed: false unsigned: false primary: false label: notnull: true type: string(45) fixed: false unsigned: false primary: false relations: BASE: local: fk_base foreign: base_id type: one TABLE: local: table_id foreign: table_parent_id type: many CHAMPS_TABLE: local: table_id foreign: fk_table_id type: many TABLE_CHAMPS: connection: doctrine tableName: TABLE_CHAMPS columns: fk_table_id: type: integer(8) fixed: false unsigned: false primary: true fk_champs_id: type: integer(8) fixed: false unsigned: false primary: true relations: TABLE: local: fk_table_id foreign: table_id type: one CHAMPS: local: fk_champs_id foreign: champs_id type: one
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 // TABLEForm.class.php public function configure() { $this->embedRelations(array( 'CHAMPS_TABLE' => array( 'considerNewFormEmptyFields' => array('label'), 'multipleNewForms' => true, 'newFormsInitialCount' => 1, 'newRelationButtonLabel' => 'Ajouter', 'formClassArgs' => array(array('ah_add_delete_checkbox' => true)), ) )); } public function listenToFormPostConfigureEvent(sfEvent $event) { if ($form = parent::listenToFormPostConfigureEvent($event)) { $form->widgetSchema['delete_object']->setOption('label', 'Supprimer'); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // CHAMPS_NOMForm.class.php public function configure() { $this->embedRelations(array( 'CHAMPS' => array( 'considerNewFormEmptyFields' => array(), 'formClassArgs' => array(array('ah_add_delete_checkbox' => false)), ) )); }Le résultat de l'affichage dans le formulaire d'une TABLE est bien l’imbrication en série de cette forme :
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 // CHAMPSForm.class.php public function configure() { $this->embedRelations(array( 'NOM_CHAMPS' => array( 'considerNewFormEmptyFields' => array('nom','is_organised','is_search'), 'formClassArgs' => array(array('ah_add_delete_checkbox' => false)), ) )); unset( $this['fk_fnom_champs'] ); }
TABLE > CHAMPS_TABLE > CHAMPS > NOM_CHAMPS
>>> Je pense avoir fais les bonnes configurations (J'ai du suivre les informations du README au moins 10 fois)
Mais si ça peux aider je développe sous windows XP - EasyPHP 5.3.6 - Symfony 1.4.12.
J'ai modifier la class dans in lib/form/doctrine/BaseFormDoctrine.class.php par ahBaseFormDoctrine et tout le tralala...
Malgré tout, je n'arrive pas à enregistré lorsque je veux ajouter un CHAMPS et un NOM_CHAMPS dans mon formulaire imbriqué! Il me dis à la validation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part forumulaire mis à jour
Partager