title: Symfony2 Listener vs DataFixtures
body: <p>I have registered the following listener as a service. This saves the logged-in-user. It works perfectly. After saving the entity the user-id is in createdBy and updatedBy. Ok a little problem: The command "php app / console doctrine: fixtures: load" throws the error "Call to a member function getUser () on a non-object.
  That's kind of understandable. Only now do I have to disable every time the service before? Do you have another solution?</p>
  
  <pre>
  class UserListener implements EventSubscriber
  {
      protected $container;
  
      public function __construct(ContainerInterface  $container)
      {
          $this->container = $container;
      }
  
      public function getSubscribedEvents()
      {
          return array(
              Events::prePersist,
              Events::preUpdate
          );
      }
  
      public function prePersist(LifecycleEventArgs $args)
      {
          $entity = $args->getEntity();
  
          if ($entity instanceof Post) {
  
              $user = $this->container->get('security.context')->getToken()->getUser();
  
              if (!is_object($user) || !$user instanceof User) {
                  throw new AccessDeniedException();
              }
  
              $entity->setCreatedBy($user);
              $entity->setUpdatedBy($user);
          }
      }
  
      /**
       * @param PreUpdateEventArgs $args
       */
      public function preUpdate(PreUpdateEventArgs $args)
      {
          $entity = $args->getEntity();
  
          $em = $args->getEntityManager();
  
          if ($entity instanceof Post) {
  
              $user = $this->container->get('security.context')->getToken()->getUser();
  
              if (!is_object($user) || !$user instanceof User) {
                  throw new AccessDeniedException();
              }
  
              $entity->setUpdatedBy($user);
  
              $uow = $em->getUnitOfWork();
              $meta = $em->getClassMetadata(get_class($entity));
              $uow->recomputeSingleEntityChangeSet($meta, $entity);
          }
      }
  }
  </pre>