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 et sfGuardUserProfile, probléme d'enregistrement


Sujet :

Symfony PHP

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Par défaut sfGuardUser et sfGuardUserProfile, probléme d'enregistrement
    Bonjour à tous,

    Je rencontre un problème avec sfDoctrineGuard que j'essaye d'étendre avec un sfGuardUserProfile en utilisant un embedForm.

    Pour mettre en évidence le problème j'ai recréé un projet vide juste initialisé avec sfDoctrineGuardPlugin.

    J'ai déclaré une classe Profile pour étendre l'objet sfGuardUser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # config/doctrine/schema.yml
    Profile:
      tableName:          test_profile
        columns:
          first_name:       { type: string(255) }
          last_name:        { type: string(255) }
          email_address:    { type: string(255), notnull: true, unique: true }
          sf_guard_user_id: { type: integer(4), notnull }
        relations:
          User:
            class:       sfGuardUser
            type:        one
            foreignType: one
            onDelete:    CASCADE
    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
    <?php
    // lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardUserForm.class
     
    class sfGuardUserForm extends PluginsfGuardUserForm
    {
      public function configure()
      {
        unset(
          $this['is_active'],
          $this['is_super_admin'],
          $this['created_at'],
          $this['updated_at'],
          $this['last_login'],
          $this['algorithm'],
          $this['salt'],
          $this['groups_list'],
          $this['permissions_list']
        );
     
        $profile = new ProfileForm();
     
        unset(
          $profile['sf_guard_user_id']
        );
     
        $this->embedForm('Profile', $profile);
        }
    }
    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
    <?php
    // app/frontend/modules/user/actions/actions.class.php
     
    class userActions extends sfActions
    {
     
      public function executeIndex(sfWebRequest $request)
      {
        $this->form = new sfGuardUserForm();
     
        if( $request->isMethod('post') && $this->form->bindAndSave($request->getParameter('sf_guard_user', array())))
        {
          $this->redirect('user/index');
        }
      }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!-- app/frontend/modules/user/templates/indexSuccess.php -->
    <form action="<?php echo url_for('user/index'); ?>" method="POST">
      <table>
        <?php echo $form; ?>
      </table>
      <input type="submit" name="save" value="save" />
    </form>
    Le formulaire s'affiche correctement, les validations fonctionnement, et si je ne remplie pas correctement les champs soumis à validations, le formulaire me reviens correctement avec les erreurs.
    Par contre si je saisie correctement le formulaire et que je passe dans le save(), j'obtiens une grosse erreur qui tâche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    500 | Internal Server Error | Doctrine_Validator_Exception Validation failed in class Profile
     
    2 fields had validation errors:
     
    * 1 validator failed on email (unique)
    * 1 validator failed on sf_guard_user_id (notnull)
    Du coup pour tester j'ai désactivé les contraintes qui posent problème, et là je me rends compte que le save() sur ma partie Profile est activé 2 fois, ce qui fait que la seconde fois le sf_guard_user_id est null et l'email n'est plus unique.

    Est ce que quelqu'un a déjà été soumis à ce problème et aurait une solution ?


    D'avance merci,
    Olivier.

  2. #2
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 32
    Par défaut
    Petit up j'ai le meme script et le meme soucis a quelques champs optionnel pres, si quelqu'un a une idée.

    Mon probleme étant que l'inscription ne peut se faire qu'avec le champ sf_guard_user_id en visible, comment l'enlever sans altéré le fonctionnement ?

  3. #3
    Invité de passage
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Par défaut Soluce
    Bonjour,

    Le post n'est pas récent, mais ma reponse aidera peut etre quelqu'un.
    J'ai ete confronté au meme probleme que j'ai réglé en oubliant le embedForm, mais en créant 2 formulaires affichés sur la meme page, et en mettant en place une transaction.

    Je me suis inspiré de cet article:
    http://www.lexik.fr/sfblog/symfony/f...re-multiples-7

Discussions similaires

  1. probléme d'enregistrement avec les chexkbox.
    Par pmboutteau dans le forum ASP
    Réponses: 16
    Dernier message: 18/10/2005, 15h05
  2. Réponses: 1
    Dernier message: 25/09/2005, 11h09
  3. Problème d'enregistrement de DLL
    Par chleuh dans le forum Langage
    Réponses: 5
    Dernier message: 01/07/2005, 10h30
  4. problème d'enregistrement de textarea dans bdAccess
    Par pmboutteau dans le forum ASP
    Réponses: 23
    Dernier message: 04/04/2005, 15h10
  5. Problèm d'enregistrement
    Par ludogim dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/06/2004, 11h41

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