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/05/2011, 11h55   #1
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
Par défaut Mise en place de sfForkedDoctrineApplyPlugin

Bonjour,

Tout d'abord, j'ai cherché de la documentation sur ce plugin est à part le README (que je trouve incomplet) et deux trois sites utilisant des vieilles versions, j'ai rien trouvé.

Donc j'ai installé le plugin sfDoctrineGuardUser puis le plugin sfForkedDoctrineApply. Mais j'aimerai savoir si vous trouviez l'implémentation que je fait correct :

J'ai ma table Person qui contient l'id de l'user qui lui correspond et qui contient les informations sur l'utilisateur.
J'ai la table sfGuardUser normal.
Et la table sfGuardUserProfile par défaut aussi.

Mais de cette façon, j'ai la table sfGuardUserProfile qui me sert strictement à rien si ce n'est avoir des champs en double entre sfGuardUser et sfGuardUserProfile.

J'aimerai savoir qu'elle est la meilleur implémentation de ce plugin ?
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 12h42   #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
Il ne te manquerais pas une notion d'héritage ?

Attention aussi, il y a plusieurs méthodes décrites dans le readme pour la création de la table user étendue, il ne faut en utiliser qu'une.
__________________
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 03/05/2011, 13h16   #3
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
J'ai essayé la notion d'héritage dans un projet test mais je me retrouve avec des champs en double entre sfGuardUser et sfGuardUserProfile tel que first_name ou last_name qui ne se mettent pas à jour lorsque j'édite à partir d'un module.

Le schéma que j'ai essayé :

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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
Person:
  inheritance:
    type: column_aggregation
    extends: sfGuardUserProfile
  columns:
    institute_id:
      type: integer
      fixed: false
      primary: false
      notnull: false
      autoincrement: false
    institute_other:
      type: string(100)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    n2dwg_id:
      type: integer
      fixed: false
      primary: false
      notnull: false
      autoincrement: false
    node_id:
      type: integer
      fixed: false
      primary: false
      notnull: false
      autoincrement: false
    domain_id:
      type: integer
      fixed: false
      primary: false
      notnull: false
      autoincrement: false
    other_node_thematic:
      type: string(60)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    node_leading_id:
      type: integer
      fixed: false
      primary: false
      notnull: false
      autoincrement: false
    node_leading_status:
      type: enum(10)
      fixed: false
      unsigned: false
      values:
        - scientific
        - technical
      primary: false
      notnull: false
      autoincrement: false
    is_enabled:
      type: boolean
      fixed: false
      unsigned: false
      primary: false
      default: '0'
      notnull: true
      autoincrement: false
    is_epn_contact:
      type: boolean
      fixed: false
      unsigned: false
      primary: false
      default: '0'
      notnull: false
      autoincrement: false
    tel:
      type: string(30)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    fax:
      type: string(30)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    department:
      type: string(100)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    role:
      type: string(60)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    title:
      type: string(50)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
    url:
      type: string(200)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
    Domain:
      class: Domain
      local: domain_id
      foreign: id
      type: one
    Institute:
      local: institute_id
      foreign: id
      type: one
    N2dwg:
      local: n2dwg_id
      foreign: id
      type: one
    Node:
      local: node_id
      foreign: id
      type: one
    Node_5:
      class: Node
      local: node_leading_id
      foreign: id
      type: one
    Doc:
      local: id
      foreign: person_author_id
      type: many
    Doc_3:
      class: Doc
      local: id
      foreign: person_provider_id
      type: many
    Event:
      local: id
      foreign: person_responsible_id
      type: many
    Events:
      class: Event
      local: person_id
      foreign: event_id
      refClass: EventPerson
    Activities:
      class: Activity
      local: person_id
      foreign: activity_id
      refClass: PersonActivity
    Domains:
      class: Domain
      local: person_id
      foreign: domain_id
      refClass: PersonDomain
    Expertises:
      class: Expertise
      local: person_id
      foreign: expertise_id
      refClass: PersonExpertise
    Keywords:
      class: Keyword
      local: person_id
      foreign: keyword_id
      refClass: PersonKeyword
    N2dwgs:
      class: N2dwg
      local: person_id
      foreign: n2dwg_id
      refClass: PersonN2dwg
    Sciencecases:
      class: Sciencecase
      local: sciencecase_id
      foreign: person_id
      refClass: PersonSciencecase
    Resource:
      local: id
      foreign: person_id
      type: many
    Resource_4:
      class: Resource
      local: id
      foreign: person_contact_id
      type: many
    Resource_5:
      class: Resource
      local: id
      foreign: person_responsible_id
      type: many
    Resource_6:
      class: Resource
      local: id
      foreign: person_updater_id
      type: many
    Task:
      local: id
      foreign: person_id
      type: many
En plus du problème de mise à jour de la table sfGuardUser, j'ai les FK tels que institute_id qui ne fonctionnent pas.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 13h41   #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
Tu as un conflit de version, probablement un sfFDAP trop vieux. Récupère la dernière version.
__________________
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 03/05/2011, 14h05   #5
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
J'ai réinstallé les deux plugin et j'ai toujours ce schéma :

sfGuardUser :
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
sfGuardUser:
  actAs: [Timestampable]
  columns:
    first_name: string(255)
    last_name: string(255)
    email_address:
      type: string(255)
      notnull: true
      unique: true
    username:
      type: string(128)
      notnull: true
      unique: true
    algorithm:
      type: string(128)
      default: sha1
      notnull: true
    salt: string(128)
    password: string(128)
    is_active:
      type: boolean
      default: 1
    is_super_admin:
      type: boolean
      default: false
    last_login:
      type: timestamp
  indexes:
    is_active_idx:
      fields: [is_active]
  relations:
    Groups:
      class: sfGuardGroup
      local: user_id
      foreign: group_id
      refClass: sfGuardUserGroup
      foreignAlias: Users
    Permissions:
      class: sfGuardPermission
      local: user_id
      foreign: permission_id
      refClass: sfGuardUserPermission
      foreignAlias: Users
sfGuardUserProfile :

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
sfGuardUserProfile:
  actAs:
    Timestampable: ~
  columns:
    user_id:
      type: integer
      notnull: true
      unique: true
    email_new:
      type: string(255)
      unique: true
    firstname:
      type: string(255)
    lastname:
      type: string(255)
    validate_at:
      type: timestamp
    validate:
      type: string(33)
  relations:
    User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      foreignType: one
      foreignAlias: Profile
  indexes:
    validate:
      fields: [validate]
Verbatim de l'installation :

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
[lvielle@pc-53 test]$ ./symfony plugin:instal sfForkedDoctrineApplyPlugin --install_deps
>> plugin    installing plugin "sfForkedDoctrineApplyPlugin"
>> sfPearFrontendPlugin downloading sfDoctrineGuardPlugin-5.0.0.tgz ...
>> sfPearFrontendPlugin Starting to download sfDoctrineGuardPlugin-5.0.0.tgz (71,660
>> sfPearFrontendPlugin bytes)
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin ...done: 71,660 bytes
>> sfSymfonyPluginManager Installation successful for plugin "sfDoctrineGuardPlugin"
>> sfPearFrontendPlugin downloading sfForkedDoctrineApplyPlugin-1.5.6.tgz ...
>> sfPearFrontendPlugin Starting to download sfForkedDoctrineApplyPlugin-1.5.6.tgz
>> sfPearFrontendPlugin (45,935 bytes)
>> sfPearFrontendPlugin ...done: 45,935 bytes
>> sfSymfonyPluginManager Installation successful for plugin "sfForkedDoctrineApplyPlugin"
>> sfSymfonyPluginManager Installing web data for plugin
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 15h30   #6
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
J'ai trouvé une solution que je trouve un peu trop radicale mais qui fonctionne donc j'explique :

En utilisant l'héritage, je me retrouvé avec une classe sfGuardUserProfile qui ne pouvait pas résoudre les clés étrangères ni retrouver l'objet Person associé au profil donc impossible de retrouver l'objet Institut associé à la Person qui été associé au profil.

J'en est déduit que sfGuardUserProfile n'héritait pas des relations en quelques sortes donc j'ai plutôt redéfinit complétement la table sfGuardUserProfile dans mon schéma.

A partir de là, je génère un module avec le sfGuardUserProfile et comme ça je peux facilement afficher toutes les informations sur une personne en ajoutant quelques getters. Plus qu'à faire les forms pour un nouvel utilisateur, pour l'inscription, pour l'édition et puis les filtres.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 10h09   #7
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
As-tu modifié ton schéma tel qu'indiqué dans le readme de sfFDAP ?
__________________
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 04/05/2011, 10h59   #8
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
J'ai utilisé la deuxième méthode présentée dans le README du plugin.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 12h33   #9
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
Par réécriture directe dans ton schéma.

C'est une bonne solution, surtout maintenant que le plugin ne devrait plus évoluer beaucoup.
__________________
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é Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h35.


 
 
 
 
Partenaires

Hébergement Web