Bonjour à tous,

Je souhaite avoir votre aide sur mon problème actuel.

Je donne la création de la base de données peuplées. En passant, je valide la question que je posais sur la façon de peupler une BD avec attribut en relation n-n.

Création BD (/config/doctrine)
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
 
# -------------------------------------------------------------------
# Table des informations sur les clients
# --------------------------------------
# Relations :
#   Client(id) <1--N> Commande(client_id) <N--1> Article
# -------------------------------------------------------------------
Client:
  actAs:  { Timestampable: ~ }
  columns:
    id:
      type: integer(10)
      autoincrement: true
      primary: true
    nom:
      type: string(255)
      notnull : true
 
# --------------------------------------------------------------------
# Table des articles
# ------------------
# Relations :
#   Article(id) <1--N> Commande(article_id) <N--1> Client
#   Article(categorie_id) <N--1> Categorie(id)
# --------------------------------------------------------------------
Article:
  actAs:  { Timestampable: ~ }
  columns:
    id:
      type:           integer(10)
      autoincrement:  true
      primary:        true
    libelle:
      type:           string(25)
      notnull:        true
    categorie_id:
      type:           integer(10)
      notnull:        true
  relations:
    Clients:
      foreignAlias: Articles
      class:        Client
      refClass:     Commande
    Categorie:
      foreignAlias: Articles
 
# --------------------------------------------------------------------
# Table des catégories d'article
# ------------------------------
# Relations :
#   Categorie(id) <1--N> Article(article_id) 
# --------------------------------------------------------------------
Categorie:
  actAs:  { Timestampable: ~ }
  columns:
    id:
      type:           integer(10)
      primary:        true
      autoincrement:  true
    libelle:
      type:           string(100)
      notnull:        true
 
# ---------------------------------------------------------------------
# Table intermédiaire matérialisant les commandes passées par un client
# ---------------------------------------------------------------------
# Relations :
#   Client <1--N> Commande <N--1> Article
#   Commande(id) <N--1> Couleur(id)
# ---------------------------------------------------------------------
Commande:
  actAs:  { Timestampable: ~ }
  columns:
    client_id:
      type:     integer(10)
      primary:  true
    article_id:
      type:     integer(10)
      primary:  true
    nombre:
      type:     integer(4)  
    couleur_id:
      type:     integer(10)  
  relations:
    Client:
      foreignAlias: Commandes
    Article:
      foreignAlias: Commandes
    Couleur:
      foreignAlias: Commandes
 
# -----------------------------------------------------------------------
# Table de la liste des couleurs possibles pour un article d'une commande
# -----------------------------------------------------------------------
# Relations :
#   Couleur(id) <1--N> Commande(couleur_id) 
# -----------------------------------------------------------------------
Couleur:
  actAs:  { Timestampable: ~ }
  columns:
    id:
      type:           integer(10)
      primary:        true
      autoincrement:  true
    libelle:
      type:           string(20)
      notnull:        true
Création fixtures (/data/fixtures)
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
 
Client:
  cl_STE:
    nom:          Stéphane
  cl_ALA:
    nom:          Alain
  cl_BER:
    nom:          Bernard
 
Categorie:
  cat_MAI:
    libelle:  Maison
  cat_JAR:
    libelle:  Jardinage
  cat_INF:
    libelle:  Informatique
 
Couleur:
  co_BLA:
    libelle:  Blanc
  co_NOI:
    libelle:  Noir
  co_VER:
    libelle:  Vert
 
Article:
  art_CHA:
    libelle:    Chaise
    Categorie:  cat_MAI
  art_TAB:
    libelle:    Table
    Categorie:  cat_MAI
  art_ARM:
    libelle:    Armoire
    Categorie:  cat_MAI
  art_PEL:
    libelle:    Pelle
    Categorie:  cat_JAR
  art_RAT:
    libelle:    Rateau
    Categorie:  cat_JAR
  art_SAC:
    libelle:    Sarcloir
    Categorie:  cat_JAR
  art_MON:
    libelle:    Moniteur
    Categorie:  cat_INF
  art_POR:
    libelle:    Portable
    Categorie:  cat_INF
  art_ALI:
    libelle:    Alimentation
    Categorie:  cat_INF
 
Commande:
  co_STE01:
    Client:   cl_STE
    Article:  art_CHA
    nombre:   4
    Couleur:  co_VER
  co_STE02:
    Client:   cl_STE
    Article:  art_TAB
    nombre:   1
    Couleur:  co_NOI
  co_STE03:
    Client:   cl_STE
    Article:  art_RAT
    nombre:   1
    Couleur:  co_NOI
  co_ALA01:
    Client:   cl_ALA
    Article:  art_RAT
    nombre:   1
    Couleur:  co_NOI
  co_ALA02:
    Client:   cl_ALA
    Article:  art_PEL
    nombre:   3
    Couleur:  co_NOI
  co_BER01:
    Client:   cl_BER
    Article:  art_MON
    nombre:   1
    Couleur:  co_BLA
  co_BER02:
    Client:   cl_BER
    Article:  art_ALI
    nombre:   2
    Couleur:  co_NOI
Et vlan, je génère le bidule...
php symfony doctrine:build --all --no-confirmation --and-load

L'inévitable création du module qui va bien :
php symfony doctrine:generate-module --with-show --non-verbose-templates frontend client Client

Et enfin la question
Je n'arrive pas, et j'ai pourtant essayé avec l'aide de la doc : 06-Advanced-Forms, à faire un formulaire qui me permette pour un client donné de créer une commande telle que celle-ci :

Le formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
CLIENT : [nom]
COMMANDE :
1 | [categorie] | [article] | [couleur] | [nombre] | [x]
2 | [categorie] | [article] | [couleur] | [nombre] | [x]
3 | [categorie] | [article] | [couleur] | [nombre] | [x]
 
[___________]^ | [___________]^ | [________]^ | [__]
 Catégorie        Article          Couleur       Nb
 
[+]
 
[save]
Comportements :
1/ CLIENT et COMMANDE sont renseignés avec les données actuelles
2/ le champ "Catégorie" présente la liste des catégories, on en choisit une et cela met à jour la liste des articles à côté, on choisit un article, la couleur et le nombre
3/ lorsque je clique sur le [+], j'ajoute une ligne avec laquelle je peux saisir une nouvelle ligne de commande
4/ lorsque je clique sur le [x], je supprime la ligne
5/ je clique sur le bouton [save] et tout est envoyé dans la BD

J'ai bien compris que tout se joue au niveau de lib/form avec les Form.class.php mais je n'ai pas réussi à les enchaîner, j'ai des résultats partiels mais rien qui ressemble ...
Mes essais ressemblent aux clones de Ripley ... y-a toujours un truc qui est difforme

Si une bonne âme peut m'aider, qu'elle ne se soucis pas de la présentation ... dans un premier temps.