Contributte event dispatcher + doctrine lifecycle

Pepino
Člen | 256
+
0
-

Zdravím, chtěl bych se zeptat jak danou věc řešíte vy.

Mám entitu a potřebuju po uložení/smazání vyvolat event.

  1. Při použítí @ORM\HasLifecycleCallbacks nemám v příslušných funkcích přístup k dispatcheru (nebo nevím jak se k němu dostat).
  2. Můžu použít @ORM\EntityListeners({"ItemListener"}) a ItemListener zaregistrovat jako službu. Tady už si můžu v konstruktoru předat dispatcher a event vyvolat. Toto řešení funguje, ale příjde mi trochu krkolomné.

Díky za každý tip.

ZahorskyJan
Člen | 59
+
0
-

Mame abstraktni manager, ktery v metodach create/update/delete odpaluje vlastni before/after udalosti pres eventDispatcher. Mame tak vetsi kontrolu nad tim, co do tech udalosti leti a jak s tim muzeme pracovat.

Pepino
Člen | 256
+
0
-

@ZahorskyJan Díky za tip! Jen bych se zeptal pro upřesnění. Tímto způsobem teda posíláte event u každé entity/akce nebo můžete i nějak jednoduše managovat, že chcete jen konkrétní entity/akce ?

ZahorskyJan
Člen | 59
+
0
-

@Pepino omlouvam se, vubec jsem nezaregistroval odpoved. Ty eventy jsou obecne a odpaluji se vzdycky na vsechny entity. Potom se v posluchaci testuje pres instance of a kdyz to sedi, tak na to reaguje. Jinak ted zkousime jeste to, ze pokud existuje specificka trida pro nejakou entitu, tak se vola i ta. V nekterych pripadech je to efektivnejsi a nemusis uz v te udalosti testovat, ze to je event pro tebe, protoze jinak se nezavola.