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

Plugins PHP Discussion :

Inscription avec sfGuard [sfGuard]


Sujet :

Plugins PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 47
    Points
    47
    Par défaut Inscription avec sfGuard
    Bonjour,

    Voila ma demande va peut être vous semblez bete et facile mais je n'arrive pas à créer ou tout du moins récupérer le formulaire d'inscription de sfGuard.

    Pour vous donner un meilleur aperçu, voila ce que j'ai fait:
    • Construire les formulaires de la base de données à l'aide de "symfony propel:build-forms"
    • j'ai créé une nouvelle table sf_guard_user_profile dans laquelle je souhaite stocker d'autres informations (nom, prenom, avatar, ...)
    • j'ai créé un nouveau module dans le frontend nommée register avec l'invite de commande : "symfony generate:module frontend register"


    Voici un apercu de mon fichier schema.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //..
    sf_guard_user_profile:
        _attributes: { phpName: SfGuardUserProfile }
        ID_Utilisateur: { phpName: IdUtilisateur, type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true, foreignTable: sf_guard_user, foreignReference: id, onDelete: CASCADE, onUpdate: RESTRICT }
        Nom: { phpName: Nom, type: VARCHAR, size: '50', required: true }
        Prenom: { phpName: Prenom, type: VARCHAR, size: '50', required: true }
        Email: { phpName: Email, type: VARCHAR, size: '255', required: true }
        Avatar: { phpName: Avatar, type: VARCHAR, size: '255', required: true }
        Metier: { phpName: Metier, type: VARCHAR, size: '50', required: true }
    J'ai donc bien lié les deux tables et mes dossiers actions et templates dans apps/frontend/register.

    Dans mon fichier indexSuccess.php j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <h1 align="center">Inscription</h1>
     
    <?php echo $form->renderFormTag(url_for('register/index')) ?>
      <table>
        <?php echo $form ?>
      </table>
     
      <input type="submit" value="S'enregistrer" />
    </form>
    Je suppose qu'il faut que je modifie mon fichier actions.class.php pour lui demander d'afficher le formulaire.
    J'ai donc essayé:
    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
     
    <?php
    class registerActions extends sfActions
    {
      public function executeIndex(sfWebRequest $request)
      {
        $this->form = new sfGuardUserForm();
        if ($request->isMethod('post'))
        {
          $this->form->bind($request->getParameter('sf_guard_user'));
          if ($this->form->isValid())
          {
            $this->form->save();
     
            $this->getUser()->signIn($this->form->getObject());
            $this->redirect('@homepage');
          }
        }
      }
    }
    Ensuite pour essayer j'ai changer ma page d'accueil dans mon fichier routing.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    homepage:
      url:   /
      param: { module: register, action: index }
    Cependant, lorsque je tente d'ccéder à la page, j'ai cette erreur:


    J'aimerais aussi savoir si les champs que j'ai défini dans ma table sf_guard_user_profile seront visibles dans mon formulaire ou non? Si tel n'est pas le cas comment faire?

    Merci d'avoir pris le temps de me lire et de votre aide.
    Amicalement,
    babyboy6492.

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Je résume :

    tu utilises sfDoctrineGuardPlugin

    tu souhaiterais étendre la tables utilisateurs

    tu souhaiterais mettre un formulaire d'inscription.


    la solution est dans ce plugin : sfForkedDoctrineApplyPlugin
    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 !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par mimi68 Voir le message
    Je résume :

    tu utilises sfDoctrineGuardPlugin
    Non j'utlise la base propel, du coup c'est sfGuardPlugin, mais je suppose que ca change pas énorme, il doit y avoir la meme chose pour propel, non??

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    C'est possible, j'ai jeté un œil, mais rien trouvé.

    Je reconnais ne plus voir touché a propel depuis plus de deux ans.

    Il faut regarder et espérer. Ou envisager de passer à Doctrine
    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 !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Je viens vous donner quelques nouvelles.

    Je suis effectivement passer à doctrine et j'ai installé le dit-plugin.
    Premier essai d'enregistrement et ca fonctionne nikel.

    Maintenant, j'aimerai savoir si je veux rajouter des champs à la table sf_guard_user_profile, et que je fais un build-schema, build-model et build-forms est ce que le formulaire va bien prendre en compte les nouveaux champs ou pas?

    Sinon pour l'edition des champs (rendre un champs en widgetInputFile), cela se passe dans quel fichier: celui du plugin nommé sfApplyApplyForm.class.php? parce qu'il y a déjà plusieurs paramaètres de mis dedans, donc je me demande si il est pas mieux de le faire dans un autre fichier...


    Merci de l'aide

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu as trois possibilités pour ajouter des champs :
    • La classique, tu ne touche pas au plugin, tu crées une table user dans ton application, tu la lies 1-1 à ta table sfGuardUser et tu y fais ce que tu veux.
    • Un peu plus élaborée, tu récupère dans le plugin, la description de la table que tu insères dans ton propre schéma et tu y ajoutes les champs voulu, (pas nécessairement simple à mettre en oeuvre).
    • Tu utilises, en plus de sfGuardDoctrinePlugin le sfForkedDoctrineApplyPlugin qui va te donner des possibilités d'étendre ta table user, mais en plus prendre en charge l'auto création de nouveau user avec vérification par email, la modification des mots de passe perdu, ... C'est celui que j'utilise.
    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 !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 47
    Points
    47
    Par défaut
    Oui j'ai pris la troisieme option. Et pour rajouter des champs à la base de données générée par sfForkedDoctrinApplyPlugin, j'ai modifié le fichier schema.yml situé dans \plugins\sfForkedDoctrineApplyPlugin\config\

    Il a suffit ensuite de faire en invite de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony doctrine:build --all --and-load --no-confirmation
    Le formulaire (\lib\form\doctrine\sfForkedDoctrineApplyPlugin\base\BasesfGuardUserProfileForm.class.php) a aisni été regénérer avec les nouveaux champs


    Ensuite pour faire un champs file pour un avatar j'ai modifié le fichier \lib\form\doctrine\sfForkedDoctrineApplyPlugin\PluginsfGuardUserProfileForm.class.php :
    Code php : 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
    <?php
     
    /**
     * PluginsfGuardUserProfile form.
     *
     * @package    ##PROJECT_NAME##
     * @subpackage form
     * @author     ##AUTHOR_NAME##
     * @version    SVN: $Id: sfDoctrineFormPluginTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
     */
    abstract class PluginsfGuardUserProfileForm extends BasesfGuardUserProfileForm
    {
        public function setup()
        {
            parent::setup();
    		$this->widgetSchema['avatar'] = new sfWidgetFormInputFile(array(
      'label' => 'Avatar utilisateur',
    ));
    		$this->validatorSchema['avatar'] = new sfValidatorFile(array(
      'required'   => false,
      'path'       => sfConfig::get('sf_upload_dir').'/avatars',
      'mime_types' => 'web_images',
    ));
        }
       //...
     
    }

    puis \plugins\sfForkedDoctrineApplyPlugin\lib\action\sfApplyActionsLibrary.class.php
    Code php : 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
    34
    35
    <?php
    //..
     
        //Code below is used when user is sending his application!
        if( $request->isMethod('post') )
        {
          //gathering form request in one array
          $formValues = $request->getParameter( $this->form->getName() );
    	  $formFiles = $request->getFiles( $this->form->getName() );
          if(sfConfig::get('app_recaptcha_enabled') )
          {
            $captcha = array(
              'recaptcha_challenge_field' => $request->getParameter('recaptcha_challenge_field'),
              'recaptcha_response_field'  => $request->getParameter('recaptcha_response_field'),
            );
            //Adding captcha to form array
            $formValues = array_merge( $formValues, array('captcha' => $captcha)  );
          }
            //binding request form parameters with form
          $this->form->bind($formValues, $formFiles);
          if ($this->form->isValid())
          {
    		$file = $this->form->getValue('file');
     
            $filename = 'uploaded_'.sha1($file->getOriginalName());
            $extension = $file->getExtension($file->getOriginalExtension());
            $file->save(sfConfig::get('sf_upload_dir').'/avatars/'.$filename.$extension);
     
            $guid = "n" . self::createGuid();
            $this->form->getObject()->setValidate( $guid );
            $date = new DateTime();
            $this->form->getObject()->setValidateAt( $date->format( 'Y-m-d H:i:s' ) );
            $this->form->save();
            $confirmation = sfConfig::get( 'app_sfForkedApply_confirmation' );
            //..


    Voila comme ca si ca peut servir à quelqu'un...

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Juste que je n'aurais pas modifié la config du fichier shema dans le plugin, mais dans le shema de base de l'application. Ainsi, pas de problème en cas de mise à jour du plugin.
    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 !

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

Discussions similaires

  1. [sfGuard] Annuaire des élèves avec sfGuard ou autre
    Par tibo1902 dans le forum Plugins
    Réponses: 1
    Dernier message: 11/06/2010, 16h26
  2. [MySQL] Inscription avec la même adresse e-mail ou le même nom d'utilisateur
    Par high_koko dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/06/2009, 01h16
  3. [sfGuard] formulaire enregistrement avec sfguard
    Par Flex dans le forum Plugins
    Réponses: 3
    Dernier message: 24/05/2009, 14h54
  4. Principe de l'inscription avec confirmation par email
    Par philippe123 dans le forum Langage
    Réponses: 4
    Dernier message: 06/05/2008, 10h12
  5. [MySQL] inscription avec validation
    Par ssony dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/04/2007, 09h40

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