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

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.