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:
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:
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 :
Citation:
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:
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 :
Citation:
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 !