Symfony2: création d’un service


Samuel Breton
Symfony2: création d’un service

Bonjour,

Nous allons voir dans cet article la mise en place d’un callback sur une entité dans symfony2.

Contexte

Nous allons ici prendre l’exemple d’un site de commande. Chaque commande a un statut et nous souhaitons enregistrer dans la base de données chaque changement de statut afin de conserver un historique.

Pour cela, Symfony2 et Doctrine fournissent un ensemble d’actions pouvant être appelées à chaque étapes du cycle de vie d’une entité (« lifecycle »).
(suite…)

Show Comments (7)

Comments

  • David

    Tu ne pouvais pas simplement créer une méthode dans ton modèle Order avec une annotation
    /** @postUpdate */ ?

    • Article Author
  • Heller

    Très utile comme d’habitude, merci 🙂

    • Article Author
  • Bérenger

    @David
    Bonjour, en utilisant le postUpdate, je n’ai pas accès à l’entityManager pour sauvegarder l’historique. Il faut donc utiliser un listener via les services.

    • Article Author
  • Benjamin

    Pour initialiser la valeur statusOld il faudrait plutôt passer par un listener sur postLoad, car quand on récupère un objet depuis la bdd le constructeur n’est pas appelé

    • Article Author
  • Christophe

    Et il n’y a pas moyen, lors d’un update, de savoir automatiquement quelle était l’ancienne valeur, sans avoir à gérer à la main un champ « old » ?

    • Article Author
  • shad0ko

    Excellent ce tutoriel ! C’est un service qui se déclenche tout seul, un système de trigger grosso modo… A l’inverse de services qui sont destinés être appelés dans les controleurs (type doctrine ou mailer).

    • Article Author
  • Vince

    Et niveau performance ? Il me semble bien que le listener est appelé à chaque Update d\’entité, chose qui peut faire largement faire perdre en performance si on a une application qui sollicite souvent doctrine, à utiliser donc avec précaution !

    • Article Author

Recevez nos articles