IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

sfGuardUser : Ajout d'une classe profile [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut sfGuardUser : Ajout d'une classe profile
    Bonjour,

    J'utilise le plugin sfGuardUser et comme il est écrit dans le readme, il est assez succin au niveau des informations sur les utilisateurs...
    Du coup, j'ai créé la classe sfGuardUserProfile pour pouvoir mettre un nom, un email et 2-3 autre trucs....
    Par contre, comment faire en sorte d'y ajouter des infos ?
    J'ai créer un admin generator dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./symfony propel:generate-admin backend sfGuardUserProfile
    mais ca ne fonctionne pas quand je fait http://srv/projet/web/backend_dev.ph...d_user_profile il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Class 'sfGuardUserProfileFormFilter' not found in /usr/local/symfony/symfony1.4/lib/generator/sfModelGeneratorConfiguration.class.php on line 496
    Comment ajouter des profils à mes users ?
    Merci de votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Quand tu dis que tu as créé la classe, tu parles de son schema dans schema.yml ?

    Si oui, n'as-tu pas oublié de reconstruire ton modèle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php symfony doctrine:build --all
    Car normalement, si ces deux étapes sont faites, le fichier sfGuardUserProfileFormFilter.class.php a été généré et tu ne devrais pas avoir cette erreur.

    EDIT

    Je viens de remarquer que tu utilises Propel. Donc ma remarque est peut-être à adapter.

    Aussi, si tu as la possibilité de changer et de passer sous Doctrine, je pense que tu auras plus de support (Propel a été délaissé pour Doctrine, je crois à partir de Symfony 1.2).

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    J'ai fait la totale !!
    J'ai modifié mon schema.yml et j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ./symfony propel:build-model
    ./symfony propel:build-forms
    ./symfony propel:build-sql
    ./symfony propel:insert-sql
    Où est normalement généré le sfGuardUserProfileFormFilter.class.php ?

    En fait, même ce qui serait bien ce serait de pouvoir gérer les profile directement à partir du admin generator sf_guard_user...
    D'ailleurs comment modifier le generator.yml du plugin ?

    Merci.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Chez moi je n'ai que ces 3 filtres qui sont liés au plugin sfDoctrineGuardUser :
    - sfGuardGroupFormFilter ;
    - sfGuardPermissionFormFilter ;
    - sfGuardUserFormFilter.

    Et je ne trouve pas de notion de Profile dans le schema.yml du plugin non plus.
    Donc j'aurais tendance à dire qu'il ne se trouve nulle part ton sfGuardProfileFormFilter
    A part si tu l'as défini toi-même.

    D'ailleurs comment modifier le generator.yml du plugin ?
    Quand tu fais (sous Doctrine) un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php symfony doctrine:generate-admin [...]
    tu te retrouves avec un nouveau module qui contient un notamment un fichier config > generator.yml.
    C'est la que tu configures ton module généré.

    Si tu parles de modifier carrément les generator.yml du plugin lui-même, dans tous les cas ne touche pas au plugin lui-même !! (pas propre + si tu mets à jour ton plugin, tu auras des problèmes + si tu installes ton projet sur une autre machine, ce genre de pratique t'amèneras à toujours oublier des changements, d'où de futurs bugs)
    Mais plutôt, refais la même commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php symfony doctrine:generate-admin [...]
    en spécifiant comme modèle celui de sfGuardUser/Permission/Group etc.

    Tu te retrouveras avec ton propre module pour gérer l'objet sfGuard, dans lequel tu pourras définir ton propre generator.yml.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    OK, merci pour la façon de surcharger le generator.yml du plugin...
    Je reviens sur la premiere partie du message, à savoir comment ajouter un profile au plugin sfGuardUser.
    En fait, dans le readme du plugin, dans la partie Customize the sfGuardUser model, ils disent que le model de base n'inclut pas d'info sur les users et c'est pour cela, qu'ils proposent de créer une classe sfGuardUserProfile :
    http://www.symfony-project.org/plugins/sfGuardPlugin
    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
    Customize the sfGuardUser model
     
    The sfGuardUser model is quite simple. There is no email or first_name or birthday columns. As you cannot add methods to the class, the sfAuthPlugin gives you the possibility to define a user profile class.
     
    By default, sfGuardUser looks for a sfGuardUserProfile class.
     
    Here is a simple example of a sfGuardProfile class that you can add to schema.yml:
     
    sf_guard_user_profile:
      _attributes: { phpName: sfGuardUserProfile }
      id:
      user_id:     { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }
      first_name:  varchar(20)
      last_name:   varchar(20)
      birthday:    date
     
    You can now access the user profile via the user object:
     
    $this->getUser()->getGuardUser()->getProfile()->getFirstName()
     
    // or via the proxy method
    $this->getUser()->getProfile()->getFirstName()
     
    The getProfile() method gets the associated user profile object or creates a new one if none already exists.
     
    When you delete a user, the associated profile is also deleted.
     
    You can change the name of the user profile class and the foreign key name in app.yml:
     
    all:
      sf_guard_plugin:
        profile_class:      sfGuardUserProfile
        profile_field_name: user_id
    Donc en effet elle n'existe pas dans le plugin à la base !
    J'ai donc suivi ce qu'ils disaient et j'ai modifié mon model mais après je ne sais pas comment modifier mon profil...
    J'ai donc créer un admin generator dans le backend mais je n'arrive pas à y accéder, il me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Class 'sfGuardUserProfileFormFilter' not found in /usr/local/symfony/symfony1.4/lib/generator/sfModelGeneratorConfiguration.class.php on line 496
    Mais peut-être que je m'y prends mal...
    Avez-vous déjà été confronté à ce problème ?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Non, je n'ai pas encore été confronté à cette erreur : j'utilise généralement un héritage par agrégation pour spécifier mes profils.

    Je dois avouer que je ne comprends pas pourquoi tu n'as pas de sfGuardProfileFormFilter qui soit généré si tu le spécifies dans le schema.yml de ton projet et que tu fais un build derrière ...
    (c'est bien dans celui de ton projet que tu l'as écrit ?)

    EDIT

    As-tu vérifié que ce fichier existe bien dans ton arborescence ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    Je me réponds à moi même...
    J'ai regénérer un admin generator du plugin sfGuardUser
    Donc il m'a bien créer tout ce qu'il faut et de plus si je veux créer un nouvel utilisateur, il me propose bien de lui donner un nom, prénom.. bref toutes les données du profile !
    Par contre, je ne peux pas "manager" directement l'objet profil....
    Et en y réfléchissant bien, c'est normal !!! Un profil n'existe pas tout seul, il est forcément attaché à un objet User !
    Donc ca ne sert à rien de créer un admin generator pour la classe sfGuardUserProfile !!
    Je ne sais pas si j'ai été très clair...
    Merci de votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout d'une classe dans un web service existant?
    Par doudoubens dans le forum Services Web
    Réponses: 0
    Dernier message: 09/05/2011, 10h22
  2. [ZF 1.0] Ajout d'une classe dans la libraire "Validate" non reconnu par l'Autoload
    Par psylo66 dans le forum Autres composants
    Réponses: 3
    Dernier message: 22/09/2010, 13h08
  3. [Séquence] ambiguité sur l'ajout d'une classe
    Par rwikus09 dans le forum Autres Diagrammes
    Réponses: 1
    Dernier message: 15/12/2009, 17h01
  4. Réponses: 2
    Dernier message: 22/04/2008, 11h13
  5. Ajout d'une classe basique dans une application formulaire
    Par Seb33300 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/04/2007, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo