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 :

[FOSUserBundle] Création de son propre utilisateur


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Par défaut [FOSUserBundle] Création de son propre utilisateur
    Bonjour à tous !

    J'ai posté hier pour une question a peu pres similaire sur le même bundle, mais là, le problème n'est plus le même !

    En fait, j'ai un utilisateur dans mon application qui hérite bien de User du FOSUserBundle.

    Le problème est que quand je fais un update sur ma base, il m'ajoute tous les champs du FOSUserBundle à mon utilisateur. Jusque là s'est tout à fait normal, mais j'aimerai ne pas utiliser tous les attributs de ce bundle (comme email_canonical, username_canonical, enable...) Comment puis je faire pour les enlever ?

    Quand je génère mon formulaire de cette façon :
    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
     
    public function buildForm(FormBuilder $builder, array $options)
        {
            //Ajouter un label perso :  'label' => 'nomDuLabel'
            $builder
                ->add('username', 'text')
                ->add('username_canonical', 'text')
                ->add('email', 'text')
                ->add('email_canonical', 'text')
                ->add('password', 'password')
                ->add('name', 'text')
                ->add('surname', 'text')
                ->add('dateBirth', 'date')
                ->add('phone', 'text')
                ->add('civility','choice', array(
                    'choices' => array('m' => 'Homme', 'f' => 'Femme')))
                ->add('nationnality', new NationnalityType)
                ->add('school', new SchoolType)
                ->add('language', 'collection', array('type'    => new LanguageType,
                                                    'prototype' => true,
                                                    'allow_add' => true))
                ->add('description', 'text')
                ->add('interest', new InterestType);
        }
    et que je ne mets pas les attributs de FOSUserBundle comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                ->add('username_canonical', 'text')
    cela plante, et me dit qu'il sont requis. Mais je n'en veux pas !

    Merci de votre future réponse artiste du web.


    Sylvain

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Par défaut
    Soit tu ne les veux vraiment pas en base et dans ce cas, il n'y a pas d'autre solution que de recréer ton propre modèle user à partir de celui créé par le FOS, soit tu ne veux juste pas te préoccuper de ces champs et dans ce cas, une solution simple consiste à créer des setters par défaut dans ton entité User, ce que j'ai fait.

    Par exemple dans ton entité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function setEmail($email)
        {
            $this->email = $email;
            $this->setUsername($email);
            return $this;
        }
    J'espère répondre à ta question.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Par défaut
    Citation Envoyé par KzrData Voir le message
    Soit tu ne les veux vraiment pas en base et dans ce cas, il n'y a pas d'autre solution que de recréer ton propre modèle user à partir de celui créé par le FOS, soit tu ne veux juste pas te préoccuper de ces champs et dans ce cas, une solution simple consiste à créer des setters par défaut dans ton entité User, ce que j'ai fait.

    Par exemple dans ton entité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function setEmail($email)
        {
            $this->email = $email;
            $this->setUsername($email);
            return $this;
        }
    J'espère répondre à ta question.
    Merci de ta réponse,

    Je viens de tester ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        /**
         * Set usernameCanonical
         *
         * @param string $usernameCanonical
         */
        public function setUsernameCanonical($usernameCanonical)
        {
            $this->usernameCanonical = "test";
        }
    Erreur : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username_canonical' cannot be null. J'ai fait un clean cache avant, et je ne l'ai pas fait apparaître dans le Formulaire.

    ça m'énerver

  4. #4
    Membre éprouvé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Par défaut
    Il me semble que pour correctement redéfinir la méthode de la classe mère, la méthode de la classe fille doit aussi posséder le même retour.
    Soit ajouter le return $this à ta méthode.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Par défaut
    Citation Envoyé par KzrData Voir le message
    Il me semble que pour correctement redéfinir la méthode de la classe mère, la méthode de la classe fille doit aussi posséder le même retour.
    Soit ajouter le return $this à ta méthode.
    Je viens d'essayer, et ça ne fonctionne pas. Un return $this; dans un setter me parait tout de même très bizarre !

  6. #6
    Membre éprouvé Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Par défaut
    Comment tu enregistre ton utilisateur dans ta base de donnée ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/10/2011, 14h01
  2. [Kettle PDI] Création de son propre plugin
    Par arno974 dans le forum kettle/PDI
    Réponses: 2
    Dernier message: 20/05/2010, 11h28
  3. Réponses: 5
    Dernier message: 28/04/2009, 12h45
  4. Création de son propre repository
    Par Cooly dans le forum Maven
    Réponses: 1
    Dernier message: 13/03/2007, 18h28
  5. Création de son propre message dans un formulaire
    Par androme dans le forum C++Builder
    Réponses: 17
    Dernier message: 06/02/2005, 23h13

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