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 :

flush ne fonctionne plus sur updateAction [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de caius2
    Femme Profil pro
    en reconversion professionnelle dans le développement web
    Inscrit en
    Mai 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : en reconversion professionnelle dans le développement web
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2015
    Messages : 36
    Par défaut flush ne fonctionne plus sur updateAction
    Bonjour,
    pourriez-vous m'indiquer quelles sont les raisons qui pourraient empêcher un $em->flush() de fonctionner ?
    parce que ma méthode updateAction qui me permet donc de modifier les enregistrements via mon formulaire contient certains traitement. je sais qu'une partie fonctionne mais les modifications apportées ne sont pas transmises à la bdd
    et je ne sais pas pourquoi...

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     /**
         * Edits an existing Application entity.
         *
         * @Route("/{id}", name="application_update")
         * @Method("PUT")
         * 
         */
        public function updateAction(Request $request, $id)
        {
            $em = $this->getDoctrine()->getManager();
            $entity = $em->getRepository('BouBundle:Application')->find($id);
            $old_entity = clone $entity ;
     
            if (!$entity) {
                throw $this->createNotFoundException('Unable to find Application entity.');
            }
     
            $deleteForm = $this->createDeleteForm($id);
            $editForm = $this->createEditForm($entity);
            $editForm->handleRequest($request);
     
            if ($editForm->isValid()) {
     
                $liens2 = $editForm['servLiens2']->getData();
                foreach ($liens2 as $lien2){
                    $entity->addServLien($lien2);
                }
                //fin bloc ----
                $liens3 = $editForm['servLiens3']->getData();
                foreach ($liens3 as $lien3){
                    $entity->addServLien($lien3);
                }
                $liens4 = $editForm['servLiens4']->getData();
                foreach ($liens4 as $lien4){
                    $entity->addServLien($lien4);
                }
                $liens5 = $editForm['servLiens5']->getData();
                foreach ($liens5 as $lien5){
                    $entity->addServLien($lien5);
                }
     
                $appli = new \ReflectionClass($entity);
                $app = strtolower($appli->getShortName());
                $Uid = (string)$this->getUser();
     
                $histo = new HistoriqueController();
                $histo->addHistorique($entity, $request,$old_entity, $app, $Uid, $em);
     
                $this->updateEntityBeforeFlush($entity);
                $em->flush();
     
                return $this->redirect($this->generateUrl('application_edit', array('id' => $id)));
            }
     
            return array(
                'entity'      => $entity,
                'edit_form'   => $editForm->createView(),
                'delete_form' => $deleteForm->createView(),
            );
        }
    j'ai par ailleurs rajouté dans mon entité Application un listener pour notifier des changements "NotifyPropertyChanged". J'ai fait des tests en supprimant ce listener, en supprimant une à une les actions à l'intérieur de updateAction mais rien ne marche, cela n'est pas transmis à la BDD...

    pourriez-vous me dire où regarder svp ?

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Bonjour,
    avant d'utiliser
    je vois pas le

  3. #3
    Membre averti Avatar de caius2
    Femme Profil pro
    en reconversion professionnelle dans le développement web
    Inscrit en
    Mai 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : en reconversion professionnelle dans le développement web
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2015
    Messages : 36
    Par défaut
    Bonjour et emrci pour ta réponse,

    c'est parce-que cela concerne la methode de mise à jour, il n'est pas utile de mettre le persist vu que normalement il récupère l'entité donc il sait quoi faire...
    J'y avais pensé à le rajouter pour tester mais cela ne change rien...
    en fait, cela viendrait du lister que j'ai rajouté dans mon entité, quand je le vire, cela refonctionne à nouveau...
    comment un listener peut-il bloquer un flush ? celui-ci ne fait que stocker dans un tableau les anciennes et nouvelles valeur de mon entité pour les afficher dans un détail

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    on aime bien voir ce que contient alors : updateEntityBeforeFlush

  5. #5
    Membre averti Avatar de caius2
    Femme Profil pro
    en reconversion professionnelle dans le développement web
    Inscrit en
    Mai 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : en reconversion professionnelle dans le développement web
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2015
    Messages : 36
    Par défaut
    le problème ne vient pas de cette méthode mais du listener, je l'ai enlevé et là ça refonctionne mais j'en ai besoin donc je me demande pourquoi et comment un listener peut bloquer un flush ?

    les use à ajouter :
    use Doctrine\Common\NotifyPropertyChanged;
    use Doctrine\Common\PropertyChangedListener;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /**
     * Application
     *
     * @ORM\Table()
     * @ORM\ChangeTrackingPolicy("NOTIFY")
     */
    class Application implements NotifyPropertyChanged

  6. #6
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Hello,

    Un coup d'oeil sur l'implémentation de la méthode onPropertyChanged pourrait nous aider pour savoir ce que fait le PropertyChangedListener.


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/04/2009, 16h27
  2. Réponses: 8
    Dernier message: 29/09/2008, 20h23
  3. DLL qui ne fonctionne plus sur un ordinateur
    Par Mikmacer dans le forum C++
    Réponses: 1
    Dernier message: 22/07/2008, 09h07
  4. C++ programme ne fonctionne plus sur autre PC
    Par Benjimo dans le forum C++
    Réponses: 5
    Dernier message: 13/06/2007, 10h58
  5. les actions ne fonctionnent plus sur ma page
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 47
    Dernier message: 14/11/2005, 13h45

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