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 :

date modify [4.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut date modify
    Bonjour,

    Je vous soumet un problème que je n'arrive pas à expliquer
    Contexte :
    Une form permet de créer un nouvel enregistrement (nouveaucoutfixe), cet objet a une date de début et une date de fin.
    La base comporte un enregistrement existant (anciencoutfixe)

    La manip consiste à prendre la date de début du "nouveaucoutfixe" et de mettre celle-ci moins 1 jour dans la date de fin de "anciencoutfixe".
    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
     
    		$form->handleRequest($request);
     
            $ok=true;
            if($form->isSubmitted() && $form->isValid()) {
                // Nous sommes en création, on essaie de controller les dates de début et de fin 
                // On vérifie que la date de début soit > à la date du jour
                $datedebutmini = new DateTime();
                $datenouveaudebut = $nouveaucoutfixe->getDateDebut();
                 if ($datedebutmini < $datenouveaudebut){
     
    dump($nouveaucoutfixe->getDateDebut());                            // affiche 2018-12-29 donc OK
    dump($datenouveaudebut);                                           // affiche 2018-12-29 donc OK
     
                    // On modifie la date de fin du coût actuel (date de début du nouveau - 1 jour)
                    $datenouveaudebut->modify('-1 day');
     
    dump($nouveaucoutfixe->getDateDebut());                             // affiche 2018-12-28 pourquoi ???? devrait être 2018-12-29
    dump($datenouveaudebut);                                            // affiche 2018-12-28 donc OK
                    $anciencoutfixe->setDateFin($datenouveaudebut);
    dump($anciencoutfixe->getDateFin());                                // affiche 2018-12-28 donc OK
    dump($nouveaucoutfixe->getDateDebut());                             // affiche 2018-12-28 pourquoi ???? devrait être 2018-12-29
    dump($datenouveaudebut);                                            // affiche 2018-12-28 donc OK
    die();              
                }
                else{
                    $ok = false;
                }
                if($ok){
    //                $manager->persist($nouveaucoutfixe);
    //                $manager->persist($anciencoutfixe);
    //                $manager->flush();
                   return $this->redirectToRoute('listcoutfixe_voir');
                }
            }
    Mon problème est que lorsque je fait "$datenouveaudebut->modify('-1 day');" cela va modifier l'objet "nouveaucoutfixe" sans raison apparente du moins pour moi.

    Votre aide me serait précieuse.
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,
    la source du problème vient de la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                $datenouveaudebut = $nouveaucoutfixe->getDateDebut();
    $datenouveaudebut et $nouveaucoutfixe->getDateDebut() sont tous deux des objets( par opposition aux types scalaires comme int, string...) qui référencement maintenant le même objet. en fait ces 2 objets ne contiennent pas la valeur date mais contient juste l'emplacement mémoire dans lequel se trouve la valeur date: d'où la modification de l'un modifie la valeur date.
    Il te faut juste cloner l'objet $nouveaucoutfixe->getDateDebut() pour que la modifcation de l'un ne se repercute pas sur l'autre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                $datenouveaudebut = clone $nouveaucoutfixe->getDateDebut();

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut
    Impec ça marche !!

    et merci pour les explications, tout est beaucoup plus clair ainsi pour moi

    Merci encore

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

Discussions similaires

  1. [WD-2003] Macro liste déroulant avec un champ date modifiable
    Par Akane42 dans le forum VBA Word
    Réponses: 5
    Dernier message: 12/04/2011, 09h43
  2. Format de date : modifier par le .parse
    Par care dans le forum Langage
    Réponses: 4
    Dernier message: 06/01/2010, 14h32
  3. [Dates] Modifier le format d'une date
    Par martoune dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2007, 17h21
  4. [Dates] modifier la date du server php
    Par Casse-noisette dans le forum Langage
    Réponses: 9
    Dernier message: 23/06/2007, 01h09
  5. [Dates] Modifier une date avec 'substr'
    Par R'SKaP dans le forum Langage
    Réponses: 4
    Dernier message: 01/06/2006, 12h40

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