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 :

Symfony 5.4.10 et knp-paginator-bundle 5.8.0 problème sur champs en DateTime


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 156
    Par défaut Symfony 5.4.10 et knp-paginator-bundle 5.8.0 problème sur champs en DateTime
    Bonjour à tous,

    J'ai un problème sur tous mes champs en DateTime avec le bundle knp-paginator-bundle.

    J'ai créé une entité "Agenda" par la commande classique de Symfony make:entity, avec des champs en DateTime.
    Exemple pour le champ dateDebut :

    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
        #[ORM\Column(type: Types::DATETIME_MUTABLE)]
        private ?\DateTimeInterface $dateDebut = null;
     
        public function getId(): ?int
        {
            return $this->id;
        }
     
        public function getDateDebut(): ?\DateTimeInterface
        {
            return $this->dateDebut;
        }
     
        public function setDateDebut(\DateTimeInterface $dateDebut): self
        {
            $this->dateDebut = $dateDebut;
     
            return $this;
        }
    Je veux lister le contenu de ma table avec le bundle knplabs/knp-paginator-bundle.
    Dans mon controller, j'ai :

    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
    $agenda = $this->doctrine->getRepository(Agenda::class)
    	->createQueryBuilder('agenda');
     
    $agenda->orderBy($sort, $direction)
    	->getQuery();
     
    $pagination = $paginator->paginate(
    	$agenda,
    	$request->query->get('page', $page),
    	10
    );
     
    return $this->render('admin/admin_agenda_list.html.twig', array(
    	'pagination' => $pagination
    ));
    A l'affichage de ma page, j'ai le message :
    Object of class DateTime could not be converted to string
    Sur d'autres projets où mon entité ne contient que des champs en String, ça marche nickel.
    Mais là, avec mon entité Agenda, ça se banane sur mes champs en Datetime.

    Je comprends le problème, getDateDebut renvoie un objet DateTime.

    Dans mes tests, j'ai modifié getDateDebut comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public function getDateDebut(): String
        {
            return $this->dateDebut->format('Y-m-d H:i:s');
        }
    Là, ma page de pagination s'affiche, mais toutes mes autres pages qui utilisent mon entité se plantent avec le message :
    Unable to transform value for property path "dateDebut": Expected a \DateTimeInterface
    Mes recherches sur ce problème me ressortent que des vieux posts qui datent d'il y a des années, et je ne trouve pas de solution.

    Vous avez des idées svp ?
    Merci d'avance pour votre aide !

  2. #2
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    441
    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 : 441
    Par défaut
    Bonjour,

    Ne modifie pas le type de retour de ton getter, il faut plutôt corriger la première erreur à l'affichage.
    Comment est affiché la date dans le template ? Si ce n'est pas déjà le cas, utilise un filtre Twig pour l'afficher (filtre date ou format_datetime par exemple) : https://twig.symfony.com/doc/3.x/filters/index.html

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 156
    Par défaut
    Bonjour,

    Merci beaucoup pour tes indications, c'est nickel
    Ma modif du getter, c'était pour décortiquer mon problème, et selon si je mets DateTime ou String, ça plante à des endroits différents.
    Je n'avais pas du tout pensé à agir au niveau du template, c'est ce qu'il fallait
    Sujet résolu, merci encore !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/04/2020, 20h13
  2. Réponses: 0
    Dernier message: 22/05/2017, 15h42
  3. [2.x] Symfony2 Knp Paginator Bundle
    Par casawia dans le forum Symfony
    Réponses: 0
    Dernier message: 18/06/2014, 17h31
  4. Pagination : numéroter sous forme "Page 1 sur 3"
    Par siro1 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 12/03/2013, 10h45
  5. Réponses: 0
    Dernier message: 31/10/2011, 19h26

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