[RESOLU] Problème horaire de saisi sur symfony

Petit nouveau ! | 6 Messages

16 mars 2023, 23:02

Bonjours, j'espère que vous allez bien et que je vais pouvoir trouver de l'aide pour ce sujet

Je vous explique, lorsque j'envoie mes données ( à savoir une heure de début et de fin), implicitement une heure se soustrait à mon champs end ce qui me pose un énorme problème,
Je vous montre ceci par mon controler

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

$dateStart = $form->get('start')->getData(); // Heure de début du rendez vous
$dateEnd = $form->get('end')->getData(); // Heure de fin du rendez vous

dump($dateStart); // LES DUMPS EN QUESTION
dump($dateEnd); // LES DUMPS EN QUESTION ```

Le dump en question


``` AppointmentController.php on line 124:
DateTime @1679004000 {#1426 ▼
date: 2023-03-16 22:00:00.0 +00:00
}
AppointmentController.php on line 125:
DateTime @1679004000 {#1488 ▼
date: 2023-03-16 22:00:00.0 +00:00
}
AppointmentController.php on line 128:
"ta pas capté" ```

```
l'affichage du formulaire

Title
Test (php France)
Start

16/03/2023
HourMinute

22
:

00
End

16/03/2023
HourMinute

23
:

00


```

et le FormTypebuilder de mon formulaire

``` ->add('start', DateTimeType::class, [
'date_widget' => 'single_text',
'view_timezone' => 'Europe/Paris',
'model_timezone' => 'GMT',
'minutes' => [0, 30],
])
->add('end', DateTimeType::class, [
'date_widget' => 'single_text',
'view_timezone' => 'Europe/Paris',
'model_timezone' => 'GMT',
'minutes' => [0, 30],
]) ```

Si vous constatez bien, vous remarquez que lorsque je met le champs end à 23h 00 à mon formulaire et sur mon dump il apparait à 22h et je ne comprends absolument pas pourquoi
J'ai beau avoir controler et tester les fuseax horaires le souci n'a pas changé

Si quelqu'un a déja eu ce probleme je lui serais fort reconnaissant
Par ailleurs, je reste dispo pour tout information qui peut m'aider
Coordialement, Un dev en galère depuis 23h

PS: Je n'ai pas réussi à montrer des screens de mon code mais je peux vous les envoyez ci besoin

Avatar du membre
Mammouth du PHP | 1303 Messages

17 mars 2023, 01:42

Vérifie que tu n'utilise pas le même nom de variable $dateStart ou $dateEnd, avant ta vérification, j'étais confronté à un même problème hier, j'ai cherché partout, j'avais un include avec les même noms de variables et elles interféraient.

Petit nouveau ! | 6 Messages

17 mars 2023, 10:33

two3d j'ai fais un controle de mes variables et aucune ne porte le même nom, c'est comme si à chaque fois que je saisissait les dates, y en a une qui se transforme automatiquement

ynx
Mammouth du PHP | 548 Messages

17 mars 2023, 10:56

Je ne vois pas d'erreur dans ton extrait, il faudrait voir le reste du code pour tester.
Le code ne se partage pas avec des screens, il faut copier le code au format texte. Utilise la balise PHP de ce forum pour partager ton code ;)

Les données sont correctes dans la requête http ? Voir dans le profiler ou faire un dump($request->get($form->getName())); où $request est l'objet Request du composant HttpFoundation.
Tu utilises quelle version de Symfony ?

Petit nouveau ! | 6 Messages

17 mars 2023, 11:20

J'ai éssayé du coup de faire le dd avec d'autres dates ynx et avec les conseils que tu m'as données voici ce que je constate

dd($request->get($form->getName())); J'ai bien testé et voici les résultats que j'ai eu

AppointmentController.php on line 102:
array:4 [▼
"Title" => ""
"start" => array:2 [▼
"date" => "2023-03-17"
"time" => array:2 [▼
"hour" => "18"
"minute" => "0"
]
]
"end" => array:2 [▼
"date" => "2023-03-17"
"time" => array:2 [▼
"hour" => "19"
"minute" => "0"
]
]
Donc je constate que les données elles sont bien enregistrer toutefois le problème subsiste quand je fais ceci

$appointment->setStart($debut);
$appointment->setEnd($fin);


// dump($form->getData());

dump($appointment->getStart());
dd($appointment->getEnd());

$appointment->addPatient($patient);
$appointment->addProfessionnal($pro);

// Et la on fait persister les donnée et on les insère dans la base de donnée
$manager->persist($appointment);
$manager->flush();

et Voila le résultat du dd

AppointmentController.php on line 149:
DateTime @1679076000 {#1417 ▼
date: 2023-03-17 19:00:00.0 Europe/Paris (+01:00)
}
AppointmentController.php on line 150:
DateTime @1679076000 {#1479 ▼
date: 2023-03-17 19:00:00.0 Europe/Paris (+01:00)
}

Je comprends pas pourquoi ma propriété start de datetime interface transforme ma donnée alors que ma propriété end ne subit pas cette transformation

ynx
Mammouth du PHP | 548 Messages

17 mars 2023, 12:13

Les données semblent en effet correctes dans la requête, le problème ne semble donc pas venir du coté client mais je ne vois pas non plus ce qui cause ce comportement dans ton code.
Essaye de nous partager tes différents fichiers pour essayer de reproduire ton bug, tu peux utiliser un site comme cjoint.com si besoin.
On ne sait toujours pas quelle version de Symfony tu utilises :)

Petit nouveau ! | 6 Messages

17 mars 2023, 12:44

J'utilise la dernière version de symfony

Je pense que je viens de résoudre le problème j'avais une variable qui contenais la variable du début de mon rendez vous mais avec un modify('+1 hours)
Du coup elle modifiaits aussi la ma variable debut

En enlevant cette variable tout revenais à la normal juste que l'heure afficher etait le bon mais le fuseau horaire etait UTC j'ai du rajouter une fonction a app.kernel

Merci pour votre aide à vous en tout cas j'aurais pas pu trouver ses pistes sans vous

Avatar du membre
Mammouth du PHP | 1303 Messages

17 mars 2023, 12:49

Ma piste était donc bonne ;)

Tu peux passer en résolu