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...) :
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
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
 
// 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)),
 		)
 	));
  }
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']
  	);
  }
Le résultat de l'affichage dans le formulaire d'une TABLE est bien l’imbrication en série de cette forme :
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