Skip to content

Instantly share code, notes, and snippets.

@benjaminrau
Created January 23, 2018 18:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benjaminrau/d4f9d75af9bc714e49cc44a0c1f87b9f to your computer and use it in GitHub Desktop.
Save benjaminrau/d4f9d75af9bc714e49cc44a0c1f87b9f to your computer and use it in GitHub Desktop.
<?php
namespace Emma\AppBundle\EventSubscriber;
use ApiPlatform\Core\EventListener\EventPriorities;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Emma\AppBundle\AppBundleEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Emma\AppBundle\Event\EntityEvent;
class EntityEventSubscriber implements EventSubscriberInterface
{
/**
* @var EventDispatcherInterface
*/
private $eventDispatcher;
public function __construct(EventDispatcherInterface $eventDispatcher) {
$this->eventDispatcher = $eventDispatcher;
}
public static function getSubscribedEvents()
{
return [
KernelEvents::VIEW => [
['triggerPrePersistEvents', EventPriorities::PRE_WRITE],
['triggerPostPersistEvents', EventPriorities::POST_WRITE],
['triggerPreUpdateEvents', EventPriorities::PRE_WRITE],
['triggerPostUpdateEvents', EventPriorities::POST_WRITE],
['triggerPreRemoveEvents', EventPriorities::PRE_WRITE]
],
];
}
public function triggerPrePersistEvents(GetResponseForControllerResultEvent $event) {
$entity = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if ($method !== Request::METHOD_POST) {
return;
}
switch (true) {
case $entity instanceof Inquiry:
$this->eventDispatcher->dispatch(AppBundleEvents::EMMA_INQUIRY_PRE_PERSIST, new EntityEvent($entity));
break;
}
}
public function triggerPostPersistEvents(GetResponseForControllerResultEvent $event) {
$entity = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if ($method !== Request::METHOD_POST) {
return;
}
}
public function triggerPreUpdateEvents(GetResponseForControllerResultEvent $event) {
$method = $event->getRequest()->getMethod();
if ($method !== Request::METHOD_PUT) {
return;
}
}
public function triggerPostUpdateEvents(GetResponseForControllerResultEvent $event) {
$entity = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if ($method !== Request::METHOD_PUT) {
return;
}
}
public function triggerPreRemoveEvents(GetResponseForControllerResultEvent $event) {
$method = $event->getRequest()->getMethod();
if ($method !== Request::METHOD_DELETE) {
return;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment