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 :

Bien gérer le temps dans un formulaire Symfony


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 200
    Par défaut Bien gérer le temps dans un formulaire Symfony
    Salut !

    Je cherche à inclure correctement dans un formulaire un champ, donnant la possibilité à l'utilisateur d'ajouter une date dd/mm/yyyy et un autre champs pour ajouter une heure hh/mm !
    De plus je cherche à avoir les date en FR si possible, j'ai déjà un début mais je crois que je j'ai un souci entre mon Entity et mon Form (l'un est string et l'autre non)
    et je sais pas trop quoi mettre pour remplacer le string pour que ça communique parfaitement. (j'ai suivi une petite formation sympa sur internet mais y'avait pas de champ de type temps)
    J'ai regarder la doc et d'autres chose mais c'est un peu flou

    Entity :

    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
     
    #[ORM\Entity(repositoryClass: PrestationRepository::class)]
    class Prestation
    {
       #[ORM\Column(type: 'string')]
       #[Assert\NotNull()]
       private string $date;
     
        public function getDate(): ?string
        {
            return $this->date;
        }
        public function setDate(string $date): static
        {
            $this->date = $date;
            return $this;
        }
    }
    Form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class PrestationType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options): void
        {
            $builder
            ->add('date', DateType::class, [
                'widget' => 'choice',
                'label' => 'Jour'
            ])
        }
        //...
    }
    Voilà Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 431
    Par défaut
    Bonjour,

    Si ce n'est pas déjà le cas, essaye d'utiliser le maker de Symfony pour générer ton entité (php bin/console make:entity).
    Lors de la création de la propriété, le maker pourra te proposer tous les types disponibles (enter ? to see all types).

    Préfères l'utilisation des types spécifiques pour les dates tel que datetime, datetime_immutable, datetimez ou datetimez_immutable :
    https://www.doctrine-project.org/pro...and-time-types
    https://www.doctrine-project.org/pro...-datetime.html

    Le nom "$date" n'est pas l'idéal pour cette propriété car elle n'indique pas ce que représente la date (la date de création de la prestation ? la date de réalisation ?).
    Par convention, les propriétés concernant une date se termine par un suffixe At : $createdAt, $updateAt, etc.
    En suivant cette convention (non obligatoire), le maker de Symfony devrait proposer par défaut un type date lors de la création de la propriété.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 200
    Par défaut
    Salut et merci pour ta réponse !

    Alors oui effectivement j'avais vu pour les créations "auto" des dates de création et de mise à jour avec createAt et updateAt et qui sont effectivement lié au dateTimeImmutable (si je dis pas de bétises ) que j'ai pu "manipuler" sur le projet justement de ce fameux cours. Mais là en l’occurrence je voulais créer des champs pour la date de la prestation (et ajouter l'heure) manipulable par l'utilisateur et donc pas auto

    J'ai bien évidement créer les éléments de mon Entité avec un bin/console make:entity à la base mais au moment de la création, je savais pas trop quoi mettre et je me suis dit que je pourrais modifier après ! Surtout qu'effectivement, entre les différents choix proposer pour les type "temps", je savais pas trop quoi mettre !

    En plus niveau Entity, ces type sont un peu spécial dans le sens ou il faut créer une fonction __construct et les importer comme une classe !

    Entre temps j'ai lu un truc ou la personne laissait en string dans son Entity et dans son Form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    ->add('date', DateType::class, [
                    'widget' => 'single_text',
                    'label' => 'Jour'
                ])
    Mais marche pas vraiment non plus

Discussions similaires

  1. [2.x] [ Symfony 2 - Doctrine2 ] Espace dans les formulaire symfony
    Par biohazard88 dans le forum Symfony
    Réponses: 6
    Dernier message: 03/06/2014, 16h08
  2. [1.x] Filtrage d'une liste checkbox dans un formulaire symfony
    Par saberwer dans le forum Symfony
    Réponses: 2
    Dernier message: 27/08/2010, 13h33
  3. Réponses: 1
    Dernier message: 17/06/2010, 13h00
  4. Réponses: 11
    Dernier message: 25/04/2008, 11h53
  5. Augmenter le temps de la bulle d'aide d'un label dans un formulaire
    Par fabiofabio dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/01/2008, 20h45

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