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 :

Données après un submit.


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut Données après un submit.
    Bonjour,

    Je rencontre un problème que je ne m'explique pas avec Symfony 4.2

    Voici le bout de code qui pose problème :
    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
     
    //Récupère les infos de l'équipe
    $teams = $this->getDoctrine()->getRepository(Teams::class)->find($id);
     
    echo $teams->getMember()->getId(); // Affiche 5 (membre actuel)
     
    //Création du formulaire
    $form = $this->createFormBuilder($teams)
        ->setAction($this->generateUrl('teams_update'))
        ->add('member', EntityType::class, array(
        'class' => Members::class,
        'choice_label' => 'login'
        ))
        ->add('name', TextType::class)
        ->add('status', CheckboxType::class, array('required' => false))
        ->getForm();
     
    //Soumission du formulaire
    $form->handleRequest($request);
    if($form->isSubmitted() && $form->isValid()) {
            //Cherche à récupérer de nouveau l'équipe pour comparer les données et loguer les différences
    	$teamsAfter = $this->getDoctrine()->getRepository(Teams::class)->find($id);
     
    	echo $teamsAfter->getMember()->getId(); // Affiche 6 (membre que j'ai sélectionné, mais pas enregistré en base)
            echo $teams->getMember()->getId(); // Affiche également 6 (membre que j'ai sélectionné, mais pas enregistré en base)
    }
    Comme vous pouvez le voir avec les commentaires, dès que je soumets le formulaire et que je récupère mon équipe en base (sans aucun INSERT / UPDATE avant), il me trouve le nouvel ID du membre alors qu'en base c'est toujours l'ancien. Quelqu'un a déjà eu ce soucis ? Et surtout, comment peut-on le corriger ?

    Merci d'avance.

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    d'ou provient le $id ? vu qu'il change c'est interressant de savoir !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    La variable $id provient d'un paramètre passait dans mon URL. Et si l'on regarde mon code, il ne change jamais entre les deux requêtes.

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    essaye de mettre : fetch="EAGER" sur la colonne member
    comme l'exemple ci dessous !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        /**
         * @ORM\ManyToOne(targetEntity="FON\WorkshopBundle\Entity\Unit", fetch="EAGER")
         * @ORM\JoinColumn(nullable=false)
         */
        private $unit;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut
    Cale ne change malheureusement rien, le comportement reste le même.

    J'ai pensé à vider le cache de Symfony au cas ou, mais rien y fait.

  6. #6
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Soumission du formulaire
    $form->handleRequest($request);
    if($form->isSubmitted() && $form->isValid()) {
    $em->persist($teams);
    $em->flush();
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2008, 12h02
  2. Pertes des données après un submit
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 22/08/2007, 21h34
  3. Récupérer ses données après formatage
    Par Sékiltoyai dans le forum Composants
    Réponses: 7
    Dernier message: 21/04/2007, 18h01
  4. [MySQL] Affichage de données après click sur liste déroulante
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/01/2006, 12h08
  5. Réponses: 1
    Dernier message: 22/09/2005, 16h23

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