Kdyby\Doctrine removeEventListener : Undefined index
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- duskohu
- Člen | 778
Caute, Neviete mi poradit mam listener na onFlush a v nom sa snazim editovat
dalsie entity. podla tochto navodu som si chcel odregistrovat lisener urobit zmenu ktoru
potrebujem a znovu ho zaregistrovat. Problem je v tom ze mi to nadava:
Undefined index: Doctrine\ORM\Event::onFlush
tu
Ja mam asi takyto listener, neviete mi poradit co robim zle?
<?php
namespace Nas\CmsModule\Listeners;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\OnFlushEventArgs;
use Doctrine\ORM\Events;
use Doctrine\ORM\Query;
use Kdyby\Events\Subscriber;
use Nas\CmsModule\Model\BasePost;
use Nas\CmsModule\Model\Route;
use Nas\CmsModule\Model\RouteRepository;
class RouterListener implements Subscriber {
/**
* Specifies the list of events to listen
* @return array
*/
public function getSubscribedEvents() {
return array(
Events::onFlush
);
}
/**
* @param OnFlushEventArgs $args
*/
public function onFlush(OnFlushEventArgs $args) {
/** @var \Kdyby\Doctrine\EntityManager $em */
$em = $args->getEntityManager();
$uow = $em->getUnitOfWork();
// Remove listener
$eventManager = $em->getEventManager();
if ($eventManager) {
$eventManager->removeEventListener(array(Events::onFlush), $this);
}
// Process
foreach ($uow->getScheduledEntityUpdates() as $key => $entity) {
if ($entity instanceof Route) {
$changeSet = $uow->getEntityChangeSet($entity);
if (array_key_exists('url', $changeSet) || array_key_exists('language', $changeSet)) {
$this->replaceChildWhenUpdate($entity, $em);
}
}
}
// Add listener back again
if ($eventManager) {
$eventManager->addEventListener(array(Events::onFlush), $this);
}
}
}