Bonjour,

Je sais que les sujets des formulaires imbriqués et celui des tables association "many-to-many" reviennent souvent ... Mais rien à faire j'ai beau lire et relire, fouiller sur les forums, les cookbook, les tuto, en français, en anglais ... je n'y arrive pas !


Je m'explique !


J'ai d'un coté une table joueurs, d'un autre coté une table postes, et entre les deux une table association "postesJoueurs".

Voici mon schema.yml pour ces tables :

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
 
Postes:
  actAs: [ Timestampable, SoftDelete ]
  tableName: postes
  columns:
    id:
      type: integer
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    name:
      type: string(45)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    sports_id:
      type: integer
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
  relations:
    PostesJoueurs:
      class: Joueurs
      refClass: PostesJoueurs
      local: id
      foreign: postes_id
 
 
Joueurs:
  actAs: [ Timestampable, SoftDelete ]
  tableName: joueurs
  columns:
    id:
      type: integer
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    sfguarduserprofile_id:
      type: integer
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    sexe:
      type: string(10)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    tel:
      type: string(20)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    portable:
      type: string(20)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    birthday:
      type: date(25)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    taille:
      type: integer
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    poids:
      type: integer
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    photo:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    PostesJoueurs:
      class: Postes
      refClass: PostesJoueurs
      local: id
      foreign: joueurs_id

J'ai donc ensuite rajouté dans la fonction configure dans mon formulaire Joueurs les lignes suivantes (me permettant d'afficher mes checkboxes pour les 5 postes que j'ai dans ma BDD):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
$this->widgetSchema['poste_list'] = new sfWidgetFormDoctrineChoice(array(
         'model' => 'Postes',
         'expanded' => true,
         'multiple' => true,
));
 
 
$this->validatorSchema['poste_list'] = new sfValidatorDoctrineChoice(array(
          'model' => 'Postes',
          'multiple' => true
));


L'affichage se déroule correctement, cependant lorsque je soumet mon formulaire seules les champs de la table "Joueurs" sont enregistrés.
Dans ma table postesJoueur rien ne se passe.
Et donc, après soumission les checkboxes cochées redeviennent vides ...

Mon schéma est-il bon dans un premier temps selon vous ?
Ma méthode est-elle la bonne ? Faut-il surcharger une méthode save ? Je suis un peu perdu je m'en remet à votre bon coeur ...

Bon dimanche !