[SYMFONY] Passer des variables d'un formulaire dans un autre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [SYMFONY] Passer des variables d'un formulaire dans un autre

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 20 mai 2017, 09:48

Oui c'est ce que j'allais dire je n'utilise pas vraiment symfony mais le session est bien présent mais dans mon cas ça ne fonctionne pas.

J'ai posté le lien github de mon projet au tout début justement.

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par zigz4g » 20 mai 2017, 01:02

Sur faudrait connaitre les composants qu'il utilise d'apres le premier post.
Je n'utilise pas vraiment symfony, disons que j'ai fais une structure plus basique dans laquelle j'y greffe et les composants de symfony.

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par dunbar » 19 mai 2017, 19:01

Bonjour,
Pour info avec symfony nous ne pouvons pas utiliser la variable de session $_SESSION .
Symfony utilise ça propre interface

http://symfony.com/doc/current/componen ... sions.html

Exemple pour un champ name:
//en début de page en dehors des méthodes
use Symfony\Component\HttpFoundation\Session\Session;


// dans une méthode
$session = new Session();
$session->set('name', $name);
// pour afficher la valeur

$session->get('name);

//$session->get('name') est accessible partout pendant la session en cours.



Et $_POST n'est pas valide il faut faire par exemple un champ name on le récupère comme ceci
$formulaire        = new Formulaire();
$form           = $this->createForm(FormulaireType::class, $formulaire        );
$form->handleRequest($request);

        
$name = $form->getData()->getName()


Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 19 mai 2017, 15:59

Ouais ça me rend fou

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par zigz4g » 19 mai 2017, 15:50

Tu peux mais tu dois dans ce cas de nouveau faire un controle sur les données. Normalement, vérifie, tu dois avoir lors de la validation de ton deuxième formulaire les données du premier dans la session. Si tu ne l'as pas, regarde la doc sur les sessions.

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 19 mai 2017, 15:28

Tu veux dire que dans ma vue je rajoute un champ class hidden et j'y met la variable session ?

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par zigz4g » 19 mai 2017, 15:22

Ok c'est normale, il est inconnu car tu est dans un deuxième appel a ton contrôleur. Dans ce cas, il faut que tu reprenne tes données en session dans le formulaire via un champ input type="hidden" ou que ce soit dans ta session.

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 19 mai 2017, 14:42

Malheureusement non ça ne marche toujours pas, il me dit toujours que le $_POST primero lui ai inconnu...

Je vais finir par faire un formulaire en html et puis le gérer dans mes controllers ^ ^

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par zigz4g » 19 mai 2017, 13:39

$em = $this->getDoctrine();

        $_SESSION['username'] = $_POST['primero']['username'];
        $_SESSION['password'] = $_POST['primero']['password'];

        $usuario = new Usuarios();
        $usuario->setUsername($_SESSION['username']);
        $usuario->setPassword($_SESSION['password']);
        $form = $this->getFormFactory()->createBuilder(InscripcionType::class, $usuario)->getForm();

        $form->handleRequest($this->getRequest());

        if($form->isSubmitted() && $form->isValid()) {

            $usuario->setUsername($_SESSION['username']);// ICI ???
            $usuario->setPassword($_SESSION['password']);
            $em->persist($usuario);
            $em->flush();

        }

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 19 mai 2017, 11:55

J'avais essayé de mettre les variables de session dans le premier controller et dans le isSubmited et isValided mais j'avais la même erreur.

Pour ta deuxième proposition je ne suis pas sur de comprendre ?

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par zigz4g » 19 mai 2017, 11:52

Peut-être qu'il faudrait mettre ton assignation dans la partie du if isValid, non ?

Ce que je veux dire, tu affiche ton deuxième formulaire avec le champ Username. Si tu veux permettre de saisir ton username une seconde fois.
Sinon, tu mets tes données validées lors de la validation du deuxième formulaire (dans le if du isValid et avant le persist :) ).

Est-ce bon comme cela ?

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 19 mai 2017, 11:35

Arf mais du coup j'ai un soucis parce que quand je valide le second formulaire il ne reconnait plus rien

 $em = $this->getDoctrine();

        $_SESSION['username'] = $_POST['primero']['username'];
        $_SESSION['password'] = $_POST['primero']['password'];

        $usuario = new Usuarios();
        $usuario->setUsername($_SESSION['username']);
        $usuario->setPassword($_SESSION['password']);
        $form = $this->getFormFactory()->createBuilder(InscripcionType::class, $usuario)->getForm();

        $form->handleRequest($this->getRequest());

        if($form->isSubmitted() && $form->isValid()) {

            $em->persist($usuario);
            $em->flush();

        }

parce que forcément le post primero n'existe plus vu qu'il ne s'agit pas du même formulaire agrrrrr

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 19 mai 2017, 10:44

Aaah mais non pas besoin de placeholder ça marche avec ce que tu disais au temps pour, dans le controller suivant il suffit de faire un setusername avec la variable qui a été attribué juste avant.

Je te remercie vraiment zigz4g :)

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par zigz4g » 19 mai 2017, 10:38

Peux tu nous donner le code de cette classe : InscripcionType::class ?
EDIT: et celui de la classe : $usuario = new Usuarios();

Re: [SYMFONY] Passer des variables d'un formulaire dans un autre

par Connor » 19 mai 2017, 10:33

D'accord je vois ce que tu veux dire, mais comment tu l'affiches dans le champ suivant ? Car je réaffiche username dans le champ suivant, je vais tester déjà avec ta solution en champ caché, oui le password aucun intéret ;) c'est juste pour faire des tests en fait.

EDIT : Et je vais comment pour cacher un champ ? 'attr' => array( 'class' => hidden) ?

Merci de ton aide.