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

  1. #1
    Nouveau membre du Club 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 : 40
    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
    Points : 39
    Points
    39
    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 éprouvé
    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
    Points : 1 022
    Points
    1 022
    Par défaut
    Bonjour,
    avant d'utiliser
    je vois pas le

  3. #3
    Nouveau membre du Club 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 : 40
    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
    Points : 39
    Points
    39
    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 éprouvé
    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
    Points : 1 022
    Points
    1 022
    Par défaut
    on aime bien voir ce que contient alors : updateEntityBeforeFlush

  5. #5
    Nouveau membre du Club 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 : 40
    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
    Points : 39
    Points
    39
    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 expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    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.


  7. #7
    Nouveau membre du Club 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 : 40
    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
    Points : 39
    Points
    39
    Par défaut
    la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     protected function _onPropertyChanged($propName, $oldValue, $newValue)
        {
            if ($this->listeners) {
                foreach ($this->listeners as $listener) {
                    $listener->propertyChanged($this, $propName, $oldValue, $newValue);
                    $this->changes[$propName]['oldValue'] = $oldValue;
                    $this->changes[$propName]['newValue'] = $newValue;
                }
            }
        }

+ 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