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 22/11/2010, 08h41   #1
Invité de passage
 
Inscription : octobre 2002
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 9
Points : 3
Points : 3
Par défaut Schéma pour étendre sfGuardUser

Bonjour,

Je débute dans la découverte de Symfony et je fais quelques essais avant de me décider à l'utiliser pour recoder une application dont le seul but est de gerer des listes de personnes.

Pour cette application j'ai besoin de sfGuardUser. L'installation ne m'a pas posé de problème. Par contre je souhaite étendre la table sf_guard_user. J'ai vu qu'il était possible de passer par les profiles, mais j'essaye une autre approche via l'inheritance de type simple.

Voici mon schéma :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Hr:
  inheritance:
    type:             simple
    extends:          sfGuardUser
  columns:
    ...
    gender: { type: string(1) }
    bank_account: { type: string(125) }
    team_id: {type: bigint(20)}
  relations:
    Team:
      type: one
      foreignType: many
      foreignAlias: Hr
      local: team_id
      foreign: id
 
Team:
  columns:
    label: { type: string(255), notnull: true}
  relations:
    Hr:
      type: many
Après avoir fait un build all je retrouve bien mon form Hr avec les champs définis ci-dessus ainsi que ceux de sfGuardUser.
Par contre, dans le form Hr le champ "team" se met en input type="text" par défaut et pas en select
Est-ce normal ? Dois-je d'office passer par la définition du widget ou est-ce parceque mon schéma n'est pas construit correctement ?

Dans mes essais, si je supprime complètement la notion de inheritance dans le schéma, alors pas de problème la relation vers team est détectée et le form issus du build all sont bien affiché avec un select pour le champ team.

D'avance merci pour votre aide.
jfdl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 13h13   #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
Ton schéma corrigé :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
hr:
  inheritance:
    type:             simple
    extends:          sfGuardUser
  columns:
    ...
    gender: { type: string(1) }
    bank_account: { type: string(125) }
    team_id: {type: bigint(20)}
  relations:
    team:
      foreignAlias: Hrs
 
team:
  columns:
    label: { type: string(255), notnull: true}
Avec recherche, tu trouveras de nombreux sujet où j'explique ces modifications

Pense à créer, dans le modèle de team, une méthode __toString()
Code :
1
2
3
4
5
 
public function __toString()
{
   return $this->getLabel();
}
__________________
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 22/11/2010, 18h36   #3
Invité de passage
 
Inscription : octobre 2002
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 9
Points : 3
Points : 3
Merci pour ton aide.
Mais il y a quelque chose que je ne dois toujours pas faire correctement car le champ team apparaît toujours sous la forme d'un input type="text"
Ce que j'ai fait :
  • Modification de mon schema.yml
  • ./symfony doctrine:build --all
  • php symfony doctrine:generate-module --with-show --non-verbose-templates extranet team team
  • php symfony doctrine:generate-module --with-show --non-verbose-templates extranet hr hr
  • ./symfony cc

Faut-il y voir un rapport avec ceci :
http://trac.symfony-project.org/ticket/8105
jfdl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 08h55   #4
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
j'ai eu le même problème, j'ai du directement surcharger sfGuardUser si je voulait conserver mes relations dans mes champs supplémentaires, l'aggrégat ne fonctionne pas.
erictomcat 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 03h28.


 
 
 
 
Partenaires

Hébergement Web