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)
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
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
Et vlan, je génère le bidule...
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
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 :
Comportements :
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]
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.
Partager