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 :

Récupération d'une valeur à partir d'un formulaire [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut Récupération d'une valeur à partir d'un formulaire
    Bonjour,

    Je suis débutant sur Symfony, alors j'ai une question qui me bloque depuis deux jours.

    J'ai un formulaire d'inscription qui contient: email + mot de passe, généré à partir de mon entité profile qui hérite du FOSuserBundle. Voici le code html du formulaire:

    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
     
     
    <form action = "{{ path('zeroprofil_formulaire1') }}" method="post" class = "well form-inline">
    <fieldset>
    <h1 style = "font-size: 12px; text-align: center; font-family: Tahoma, Geneva, sans-serif"> Nouveau sur OlympMe? Inscrivez vous! </h1>
     
    <label for="zero_userbundle_profiletype_email" class="required"></label>
    <input type="email" placeholder="Adresse email" id="zero_userbundle_profiletype_email" name="zero_userbundle_profiletype[email]" required="required">
    <br></br>
    <label for="zero_userbundle_profiletype_password" class="required"></label>
    <input type="password" placeholder="Mot de Passe" id="zero_userbundle_profiletype_password" name="zero_userbundle_profiletype[password]" required="required">
    <div class="controls"> <br/>
    <button type="submit" class="btn btn-info">
    <i class="icon-user icon-white"></i> s'inscrire </button>
    </div>
    </fieldset>
    </form>
    Une fois l'internaute saisie ce formulaire sur la page d'accueil, j'enregistre à la BD à partir de mon contrôleur. Voici le code:

    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
     
    	public function accueilAction()
        {
        	$profile = new profile();
     
     
     
    		$form = $this->createForm(new ProfileType, $profile);
     
    		$request = $this->get('request');
     
    		if( $request->getMethod() == 'POST' )
            {
     
                 $form->bind($request);
    			 $em = $this->getDoctrine()->getEntityManager();
    			 $profile->setUsername($profile->getEmail());
                 $em->persist($profile);
                 $em->flush();
    			 echo $request->get('zero_userbundle_profiletype[email]');
                 return $this->redirect( $this->generateUrl('zeroprofil_formulaire1'));
     
    		}
     
    		return $this->render('ZeroProfilBundle:Profile:accueil.html.twig',array('form' => $form->createView(),));
     
        }
    Ensuite, je redirige l'internaute vers la page formulaire 1, pour qu'il continue son processus d'inscription. A ce niveau j'ai besoin de récupérer l'adresse mail qui a été introduite, pour mettre à jour uniquement la ligne dudit internaute, voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    	public function formulaire1Action()
        {
     
     
    		$request = $this->get('request');
     
     
    		echo $request->get('zero_userbundle_profiletype[email]');
     
            return $this->render('ZeroProfilBundle:Profile:formulaire1.html.twig');
        }
    Toutefois, la variable $request n'affiche rien, donc je ne sais pas comment je vais récupérer mon utilisateur afin qu'il continue son processus d'inscription.

    Merci pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Par défaut Passe le en argument

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Merci beaucoup.. Mais je ne vois pas trop comment je vais utiliser ça.. Pourriez vous m'expliquer plus?

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Je veux juste ajouter, que mm en exécutant cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $request->request->get('zero_userbundle_profiletype[email]');
    au niveau de la page qui contient le formulaire d'inscription, rien ne s'affiche!!

    Je ne comprends pas, est ce que la facon avec laquelle je veux afficher le mail est fausse?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Je vous remercie vraiment, vous faites comme mon prof avant

    Ok, je vais lire la doc, mais le lien que vous m'avez envoyé ne marche pas

    Et est ce que vous pourriez juste m'approcher le problème, car je ne sais pas par où commencer?

    Merci encore

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Bonjour,

    Bon j'ai lu tout ce document, la quasi totalité du contenu je la connais.. Mais j'ai pas pu passer mon obstacle. Donc, svp, si vous avez une solution outre le doc ça sera gentil, car je suis contraint par le temps

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Par défaut
    Bonjour,

    Votre prof n'a donc pas dû assez insister sur les bienfaits de lire la doc avec attention car la réponse s'y trouve bel et bien.
    Je me permets de vous rapprocher de l'infime partie que vous ne connaissez pas :
    http://symfony.com/fr/doc/2.1/book/f...es-et-doctrine

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Je crois que vous croyez que je me croise les bras en attendant des réponses. ça fait 3 jours que je cherche partout, et je bloque, voici mon code maintenant.

    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
    public function accueilAction()
        {
        	$profile = new profile();
     
    		$form = $this->createForm(new ProfileType, $profile);
     
    		$request = $this->get('request');
     
    		if( $request->getMethod() == 'POST' )
            {
     
                 $form->bindRequest($request);
    			 $em = $this->getDoctrine()->getEntityManager();
    			 $profile->setUsername($profile->getEmail());
                 $em->persist($profile);
                 $em->flush();
    			 $info = $form->getData();
    			 echo $info->getEmail();
                 return $this->redirect( $this->generateUrl('zeroprofil_formulaire1'));
     
    		}
     
    		return $this->render('ZeroProfilBundle:Profile:accueil.html.twig',array('form' => $form->createView(),));
     
        }
    Je ne vois pas pourquoi la page formulaire1, ne m'affiche pas l'email de celui qui a fait l'inscription au niveau de la page d'accueil. Dites moi, ce code est juste ou il est faux.

    Je tiens à vous informer que je récupère les données pour les enregistrer dans ma base de données. Sauf que là, j'ai besoin de récupérer email de ce nouvel inscrit pour la suite du processus. Donc je veux récupérer ce paramètre pour l'utiliser dans une autre méthode du contrôleur.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Par défaut
    Je vais être franc et direct : quand je lis "Bon j'ai lu tout ce document, la quasi totalité du contenu je la connais.." et que je vois que vous ne maîtrisez pas un simple getData(), je me dis en effet que vous n'approfondissez pas beaucoup et que vous surestimez votre maîtrise de symfony.

    Dans l'état actuel de votre code, il est tout à fait logique que vous ne récupériez pas l'email de l'utilisateur nouvellement inscrit dans une autre méthode? Mais avant d'en arriver là, il me parait important que vous compreniez ce que vous faites.

    Première chose, une fois la commande $form->bind($request); passée, que contient votre variable $profile ?

    Deuxième chose, que veut dire en français $profile->setUsername($prolfile->getEmail()); ?

    Troisième chose, que va renvoyer ($profile->getEmail() == $info->getEmail() ?

    En répondant à ces questions, vous comprendrez bien mieux comment fonctionne le traitement du formulaire et vous pourrez sans doute trouver dans le premier lien qui vous a été donnée comment transmettre l'email de l'utilisateur à la méthode que vous souhaitez. Là aussi, il s'agit d'un basique de symfony et si vous souhaitez progresser dans votre connaissance du framework, vous devez être capable de le trouver seul dans la doc.

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    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
    public function accueilAction()
    {
    	$profile = new profile();
     
    	$form = $this->createForm(new ProfileType, $profile);
     
    	$request = $this->get('request');
     
    	if( $request->getMethod() == 'POST' )
            {
     
            	$form->bindRequest($request);
    			 $em = $this->getDoctrine()->getEntityManager();
    			 $profile->setUsername($profile->getEmail());
    		$em->persist($profile);
    		$em->flush();
     
    		return $this->redirect( $this->generateUrl('zeroprofil_formulaire1', array('user' => $form->getData('email'))));
     
    	}
     
    	return $this->render('ZeroProfilBundle:Profile:accueil.html.twig',array('form' => $form->createView(),));
     
    }
     
    public function formulaire1Action($user)
    {
    	echo $user;
            //$info = $form->getData();
    	//echo $info->getEmail();				
            return $this->render('ZeroProfilBundle:Profile:formulaire1.html.twig', array('user' => $user));
    }
    Bon j'ai trouver l'alternative de faire passer les paramètres à travers l'url, chose que je n'aimerai pas faire. Pourriez vous me dire comment éviter de faire ceci? Merci

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Par défaut
    Mais j'ai pas pu passer mon obstacle. Donc, svp, si vous avez une solution outre le doc ça sera gentil, car je suis contraint par le temps
    L'obstacle est d'envergure !
    La contrainte que vous évoquez m'amène à vous conseiller l'installation d'un outils 'clé en main' ? Quelle est exactement votre besoin ?

    Au plaisir

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

Discussions similaires

  1. Récupération d'une valeur à partir d'un JPanel
    Par Douline1990 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 04/01/2012, 14h57
  2. Réponses: 2
    Dernier message: 01/08/2008, 09h33
  3. [MySQL] Récupération d'une valeur à partir d'une procédure stockée
    Par spaukensen dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 22/03/2008, 12h14
  4. Récupération d'une valeur de formulaire & Javascript
    Par meche dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/12/2006, 19h16
  5. Réponses: 2
    Dernier message: 17/05/2006, 21h35

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