Skip to content

Instantly share code, notes, and snippets.

@vasildakov-zz
Last active November 21, 2021 05:32
Show Gist options
  • Save vasildakov-zz/2037d0ffd73ee89d7506 to your computer and use it in GitHub Desktop.
Save vasildakov-zz/2037d0ffd73ee89d7506 to your computer and use it in GitHub Desktop.
ZF2 and Doctrine Entity listeners resolver
<?php
namespace Application;
class Module
{
public function onBootstrap(MvcEvent $e)
{
$application = $e->getTarget();
$serviceManager = $application->getServiceManager();
$sharedManager = $application->getEventManager()->getSharedManager();
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$listener = new \Application\Listener\UserListener($serviceManager)
$em = $serviceManager->get('Doctrine\ORM\EntityManager');
$em->getConfiguration()->getEntityListenerResolver()->register($listener);
}
}
<?php
namespace Application\Entity\Listener;
use Zend\ServiceManager\ServiceManager;
use Doctrine\Common\Persistence\Event\LifecycleEventArgs as Event;
use Application\Entity\User;
class UserListener {
/**
* @var Zend\ServiceManager\ServiceManager $serviceManager
*/
public $serviceManager;
/**
* Constructor
*/
public function __construct(ServiceManager $serviceManager)
{
$this->serviceManager = $serviceManager;
}
/**
* prePersist
*/
public function prePersist(User $user, Event $args)
{
// pre persist
}
/**
* postPersist
*/
public function postPersist(User $user, Event $args)
{
// var_dump($messageRecipient); exit();
// send user confirmation email
$entity = $args->getEntity();
$entityManager = $args->getEntityManager();
if($entity instanceof User) {
$myService = $this->serviceManager->get('MyService');
$myService->doSomething();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment