Symfony, Doctrine | Récupérer les anciennes données d'un formulaire FormType

Développeur web Front-End dans l'Oise - Gary Deshayes <--Translation

Crée le : vendredi 14 février 2020


Méthode pour récuperer les anciennes données d'un formulaire FormType sous Symfony

Il vous est nécessaire de récupérer les anciennes données d'une Entity sous Symfony pour faire un certain traitement tel que la gestion d'une historisation ou autre ? Je vais vous présenter une méthode qui utilise Unit Of Work pour comparer les anciennes données des données envoyées via le formulaire créée par FormType.

Utiliser Unit Of Work de Doctrine

Pour récupérer les anciennes données il faut récupérer Unit Of Work du manager de Doctrine :

$unit_of_work = $this->getDoctrine()->getManager()->getUnitOfWork();

Ensuite nous disons à Unit Of Work de récupérer les changements en cours :

$uow->computeChangeSets();

Grâce à la récupération des changements avec la fonction computeChangeSets() nous pouvons dire à Unit Of Work de récupérer le "ChangeSet" de l'entité voulue, dans mon exemple un article : 

$changeset = $uow->getEntityChangeSet($article);

Et si nous dumpons la variable $changeset avec la fonction dump() nous pouvons voir ces données :

old data formtype symfony

Nous voyons que j'ai modifié le title de mon article, j'ai donc en $changeset["title"][0] mon ancienne donnée et en $changeset["title"][1] la nouvelle donnée, pareil pour le champ updatedAt nous avons la date de modification avant et après.

Vous avez maintenant tout ce qu'il faut pour comparer vos anciennes données, des nouvelles données envoyées par FormType sous Symfony grâce à Doctrine.

Articles récents :
Symfony

Crée le : lundi 1 novembre 2021

Javascript Framework JS

Crée le : dimanche 31 octobre 2021

Symfony

Crée le : mercredi 1 septembre 2021

Javascript Framework JS

Crée le : samedi 28 novembre 2020

Javascript SQL Framework JS

Crée le : dimanche 20 septembre 2020

Symfony Bugs

Crée le : dimanche 26 janvier 2020