update event suscribers
This commit is contained in:
parent
0bf7bc7789
commit
3bf4a1460e
Binary file not shown.
Before Width: | Height: | Size: 15 KiB |
|
@ -15,6 +15,9 @@ class EntityManagerEvent extends Event
|
||||||
const CREATE_EVENT = 'entity_manager_event.create';
|
const CREATE_EVENT = 'entity_manager_event.create';
|
||||||
const UPDATE_EVENT = 'entity_manager_event.update';
|
const UPDATE_EVENT = 'entity_manager_event.update';
|
||||||
const DELETE_EVENT = 'entity_manager_event.delete';
|
const DELETE_EVENT = 'entity_manager_event.delete';
|
||||||
|
const PRE_CREATE_EVENT = 'entity_manager_event.pre_create';
|
||||||
|
const PRE_UPDATE_EVENT = 'entity_manager_event.pre_update';
|
||||||
|
const PRE_DELETE_EVENT = 'entity_manager_event.pre_delete';
|
||||||
|
|
||||||
protected EntityInterface $entity;
|
protected EntityInterface $entity;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ use Symfony\Component\Finder\Finder;
|
||||||
*
|
*
|
||||||
* @author Simon Vieille <simon@deblan.fr>
|
* @author Simon Vieille <simon@deblan.fr>
|
||||||
*/
|
*/
|
||||||
class BlogPostEventSubscriber implements EventSubscriberInterface
|
class BlogPostEventSubscriber extends EntityManagerEventSubscriber
|
||||||
{
|
{
|
||||||
protected Filesystem $filesystem;
|
protected Filesystem $filesystem;
|
||||||
protected PostRepositoryQuery $query;
|
protected PostRepositoryQuery $query;
|
||||||
|
@ -26,14 +26,6 @@ class BlogPostEventSubscriber implements EventSubscriberInterface
|
||||||
$this->query = $query;
|
$this->query = $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getSubscribedEvents()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
EntityManagerEvent::UPDATE_EVENT => 'onUpdate',
|
|
||||||
EntityManagerEvent::DELETE_EVENT => 'onDelete',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function support(EntityInterface $entity)
|
public function support(EntityInterface $entity)
|
||||||
{
|
{
|
||||||
return $entity instanceof Post;
|
return $entity instanceof Post;
|
||||||
|
|
|
@ -10,18 +10,17 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
*
|
*
|
||||||
* @author Simon Vieille <simon@deblan.fr>
|
* @author Simon Vieille <simon@deblan.fr>
|
||||||
*/
|
*/
|
||||||
class EntityManagerEventSubscriber implements EventSubscriberInterface
|
abstract class EntityManagerEventSubscriber implements EventSubscriberInterface
|
||||||
{
|
{
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getSubscribedEvents()
|
public static function getSubscribedEvents()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
EntityManagerEvent::CREATE_EVENT => 'onCreate',
|
EntityManagerEvent::CREATE_EVENT => 'onCreate',
|
||||||
EntityManagerEvent::UPDATE_EVENT => 'onUpdate',
|
EntityManagerEvent::UPDATE_EVENT => 'onUpdate',
|
||||||
EntityManagerEvent::DELETE_EVENT => 'onDelete',
|
EntityManagerEvent::DELETE_EVENT => 'onDelete',
|
||||||
|
EntityManagerEvent::PRE_CREATE_EVENT => 'onPreCreate',
|
||||||
|
EntityManagerEvent::PRE_UPDATE_EVENT => 'onPreUpdate',
|
||||||
|
EntityManagerEvent::PRE_DELETE_EVENT => 'onPreDelete',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,4 +35,16 @@ class EntityManagerEventSubscriber implements EventSubscriberInterface
|
||||||
public function onDelete(EntityManagerEvent $event)
|
public function onDelete(EntityManagerEvent $event)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onPreCreate(EntityManagerEvent $event)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onPreUpdate(EntityManagerEvent $event)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onPreDelete(EntityManagerEvent $event)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,10 @@ class EntityManager
|
||||||
|
|
||||||
public function create(EntityInterface $entity): self
|
public function create(EntityInterface $entity): self
|
||||||
{
|
{
|
||||||
|
$this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::PRE_CREATE_EVENT);
|
||||||
|
|
||||||
$this->persist($entity);
|
$this->persist($entity);
|
||||||
|
|
||||||
$this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::CREATE_EVENT);
|
$this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::CREATE_EVENT);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
@ -35,7 +38,10 @@ class EntityManager
|
||||||
|
|
||||||
public function update(EntityInterface $entity): self
|
public function update(EntityInterface $entity): self
|
||||||
{
|
{
|
||||||
|
$this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::PRE_UPDATE_EVENT);
|
||||||
|
|
||||||
$this->persist($entity);
|
$this->persist($entity);
|
||||||
|
|
||||||
$this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::UPDATE_EVENT);
|
$this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::UPDATE_EVENT);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
@ -43,6 +49,8 @@ class EntityManager
|
||||||
|
|
||||||
public function delete(EntityInterface $entity): self
|
public function delete(EntityInterface $entity): self
|
||||||
{
|
{
|
||||||
|
$this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::PRE_DELETE_EVENT);
|
||||||
|
|
||||||
$this->entityManager->remove($entity);
|
$this->entityManager->remove($entity);
|
||||||
$this->flush();
|
$this->flush();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue