Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2011, 12h22   #1
Invité de passage
 
Homme
Développeur informatique
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Par défaut Probleme avec les EmbeddedForms symfony

Hello guys,
J'utilise des formulaires imbriqués et ça marche nickel mais ce qui est bizarre est qu'à chaque fois que je veux personnaliser le formulaire ou les formulaires l'update ne se fait plus et je sais pas pourquoi peut etre vous aurez une idée la dessus.
Voici mon schema.yml
Code :
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
129
130
131
132
133
134
135
136
137
138
139
140
141
 
Annexe:
  connection: doctrine
  tableName: annexe
  columns:
    id_annexe:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    is_activated:
      type: boolean
      fixed: false
      unsigned: false
      primary: false
      default: 0
      notnull: true
    updated_at:
      type: timestamp(25)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
   created_at:
      type: timestamp(25)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    Board:
      local: id_annexe
      foreign: id_annexe
      type: many
Board:
  connection: doctrine
  tableName: board
  columns:
    id_annexe:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
     autoincrement: false
  id_board:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: false
    updated_at:
      type: timestamp(25)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
   commentaire:
      type: string(1000)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    Annexe:
      local: id_annexe
      foreign: id_annexe
      type: one
   CodeLine:
      local: id_annexe
      foreign: id_annexe
      type: many
   CodeLines:
      class: CodeLine
      local: id_board
      foreign: id_board
      type: many
CodeLine:
  connection: doctrine
  tableName: code_line
  columns:
    id_annexe:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: false
    id_board:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: false
   id_code_line:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: false
   description:
      type: string(1000)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
   commentaire:
      type: string(1000)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    Board:
      local: id_annexe
      foreign: id_annexe
      type: one
   Board_3:
     class: Board
     local: id_board
     foreign: id_board
     type: one
  TDetails:
     local: id_annexe
     foreign: id_annexe
     type: many
  TDetails_2:
    class: TDetails
    local: id_board
    foreign: id_board
    type: many
  TDetails_3:
    class: TDetails
    local: id_code_line
    foreign: id_code_line
    type: many
Apres dans BoardForm je fais une imbrication de Codeline
Code :
$this->embedForm('CodeLines', new CodeLinesForm($this->object))
et la j'arrive à avoir toutes mes lignes qui composent mon tableau Board. Maintenant si j'utilise echo $form j'ai mon formulaire et je peux faire une mise à jour de mes objets seulement si je decide de personnaliser le formulaire dans _form.php en utilisant le code suivant l'update ne marche plus:
Code :
1
2
3
<?php foreach ($form['codelines'] as $line) : ?>
      <?php echo $line['description']->renderRow(); ?>
        <? endif; ?>
SVP I REALLY NEED HELP!!!!
ODriginal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 14h34   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Fichier shema "a ma façon",
Code :
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
#shema.yml revu (non testé)
Annexe:
  tableName: annexe
  actAs:
    timestampable: ~ #Génère et gère update et create
  columns:
    #Clef auto crée, elle s'appelle toujours id.
    is_activated:
      type: boolean
      default: false
      notnull: true
 
Board:
  tableName: board
  actAs:
    timestampable: ~
  columns:
    # id auto-généré
    id_annexe:
      type: integer #id de type integer
      # jamais plus d'une clef dans la primary
   commentaire:
      type: string(1000)
  relations:
    Annexe:
      foreignAlias: Boards
 
CodeLine:
  connection: doctrine
  columns:
    # id auto-généré
    id_annexe:
      type: integer
    id_board:
      type: integer
   description:
      type: string(1000)
   commentaire:
      type: string(1000)
  relations:
    Board:
      foreignAlias: CodeLines
    # quid d'une relation board3 ??? erreur ???
    # les trois relation TDetails seront à définir sur la table TDetails
    # Une classe est toujours au singulier donc -> TDetail
Sauf exception exceptionnel, il ne faut TOUJOURS générer les tables depuis symfony et son schéma. L'opération inverse ne doit être utilisé que très exceptionnellement et s'il n'y a vraiment pas possibilité de faire autrement. Elle demande à reprendre le fichier générer pour le rendre viable. La durée de dev est largement augmentée.


Pour ton code essayes :
Code :
1
2
3
<?php foreach ($form['codelines'] as $line) : ?>
      <?php echo $line['description']->renderRow() ?>
<? endforeach ?>
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 10h44   #3
Invité de passage
 
Homme
Développeur informatique
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Merci michel pour ta réponse.
C'est mon premier projet sur symfony ce qui explique un peu les erreurs commises dans mon fichier schema.yml mais j'ai pris en compte tes suggestions.J'ai réussi à faire fonctionner l'update des formulaires imbriqués.
Maintenant j'ai un autre souci avec l'imbrication.
J'ai imbriqué TDetailForm dans CodeLineForm et CodeLineForm dans BoardForm que j'utilise dans un module appélé board et BoardForm dans AnnexeForm que j'utilise dans un autre module appelé annexes.
Au niveau du module board j'ai quelques champs de CodeLineForm:
Code :
1
2
3
4
5
6
7
8
 
<?php foreach ($form['CodeLines'] as $key => $line)
{
      echo $form['CodeLines'] ['$key'] ['nb_personne']->renderRow(); 
      echo $form['CodeLines'] ['$key'] ['categ_personne']->renderRow();
      echo $form['CodeLines'] ['$key'] ['taux_horaire']->renderRow();
      echo $form['CodeLines'] ['$key'] ['nb_unite']->renderRow();
}
Au niveau du module annexes j'ai un autre champs de CodeLineForm qui n'est pas affiché dans le module board
Code :
1
2
3
4
5
 
<?php foreach ($form['Boards'] as $key => $boarline)
{
      echo $form['Boards'] ['$key'] ['CodeLines']['description']->renderRow(); 
}
Maitenant si je mets à jour ma table codeline à partir du module board il efface le contenu du champs description et meme scenario si je mets a jour la table codeline à partir du module annexes les contenus des autres champs affichés dans board sont effacés.Avez vous (les developpeurs) une idée là dessus???
ODriginal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 09h24   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Désolé pour le délais.

Il n'est pas possible de faire des embed dans des embed (au niveau de la gestion par le moteur doctrine du moins).
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h24.


 
 
 
 
Partenaires

Hébergement Web