private function loadTypeListener(array $typeConfig, ContainerBuilder $container, $objectPersisterId, $indexName, $typeName)
    {
        if (isset($typeConfig['listener']['service'])) {
            return $typeConfig['listener']['service'];
        }

        /* Note: listener services may conflict with "prototype.driver", if the
         * index and type names were "prototype" and a driver, respectively.
         */
        $abstractListenerId = sprintf('fos_elastica.listener.prototype.%s', $typeConfig['driver']);
        $listenerId = sprintf('fos_elastica.listener.%s.%s', $indexName, $typeName);
        $listenerDef = new ChildDefinition($abstractListenerId);
        $listenerDef->replaceArgument(0, new Reference($objectPersisterId));
        $listenerDef->replaceArgument(3, $typeConfig['listener']['logger'] ?
            new Reference($typeConfig['listener']['logger']) :
            null
        );
        $listenerConfig = [
            'identifier' => $typeConfig['identifier'],
            'indexName' => $indexName,
            'typeName' => $typeName,
        ];

        $tagName = null;
        switch ($typeConfig['driver']) {
            case 'orm':
                $tagName = 'doctrine.event_listener';
                break;
            case 'phpcr':
                $tagName = 'doctrine_phpcr.event_listener';
                break;
            case 'mongodb':
                $tagName = 'doctrine_mongodb.odm.event_listener';
                break;
        }

        if ($typeConfig['listener']['defer']) {
            $listenerDef->setPublic(true);
            $listenerDef->addTag(
                'kernel.event_listener',
                ['event' => 'kernel.terminate', 'method' => 'onTerminate']
            );
            $listenerDef->addTag(
                'kernel.event_listener',
                ['event' => 'console.terminate', 'method' => 'onTerminate']
            );
            $listenerConfig['defer'] = true;
        }

        $listenerDef->replaceArgument(2, $listenerConfig);

        if (null !== $tagName) {
            foreach ($this->getDoctrineEvents($typeConfig) as $event) {
                $listenerDef->addTag($tagName, ['event' => $event]);
            }
        }

        $container->setDefinition($listenerId, $listenerDef);

        return $listenerId;
    }
private function loadTypeListener(array $typeConfig, ContainerBuilder $container, $objectPersisterId, $indexName, $typeName)
    {
        if (isset($typeConfig['listener']['service'])) {
            return $typeConfig['listener']['service'];
        }

        /* Note: listener services may conflict with "prototype.driver", if the
         * index and type names were "prototype" and a driver, respectively.
         */
        $abstractListenerId = sprintf('fos_elastica.listener.prototype.%s', $typeConfig['driver']);
        $listenerId = sprintf('fos_elastica.listener.%s.%s', $indexName, $typeName);
        $listenerDef = new ChildDefinition($abstractListenerId);
        $listenerDef->replaceArgument(0, new Reference($objectPersisterId));
        $listenerDef->replaceArgument(3, $typeConfig['listener']['logger'] ?
            new Reference($typeConfig['listener']['logger']) :
            null
        );
        $listenerConfig = [
            'identifier' => $typeConfig['identifier'],
            'indexName' => $indexName,
            'typeName' => $typeName,
        ];

        $tagName = null;
        switch ($typeConfig['driver']) {
            case 'orm':
                $tagName = 'doctrine.event_listener';
                break;
            case 'phpcr':
                $tagName = 'doctrine_phpcr.event_listener';
                break;
            case 'mongodb':
                $tagName = 'doctrine_mongodb.odm.event_listener';
                break;
        }

        if ($typeConfig['listener']['defer']) {
            $listenerDef->setPublic(true);
            $listenerDef->addTag(
                'kernel.event_listener',
                ['event' => 'kernel.terminate', 'method' => 'onTerminate']
            );
            $listenerDef->addTag(
                'kernel.event_listener',
                ['event' => 'console.terminate', 'method' => 'onTerminate']
            );
            $listenerConfig['defer'] = true;
        }

        $listenerDef->replaceArgument(2, $listenerConfig);

        if (null !== $tagName) {
            foreach ($this->getDoctrineEvents($typeConfig) as $event) {
                $listenerDef->addTag($tagName, ['event' => $event]);
            }
        }

        $container->setDefinition($listenerId, $listenerDef);

        return $listenerId;
    }
private function loadTypeListener ( array $ typeConfig , ContainerBuilder $ container , $ objectPersisterId , $ indexName , $ typeName ) { if ( isset ( $ typeConfig [ 'listener' ] [ 'service' ] ) ) { return $ typeConfig [ 'listener' ] [ 'service' ] ; } /* Note: listener services may conflict with "prototype.driver", if the
         * index and type names were "prototype" and a driver, respectively.
         */ $ abstractListenerId = sprintf ( 'fos_elastica.listener.prototype.%s' , $ typeConfig [ 'driver' ] ) ; $ listenerId = sprintf ( 'fos_elastica.listener.%s.%s' , $ indexName , $ typeName ) ; $ listenerDef = new ChildDefinition ( $ abstractListenerId ) ; $ listenerDef -> replaceArgument ( 0 , new Reference ( $ objectPersisterId ) ) ; $ listenerDef -> replaceArgument ( 3 , $ typeConfig [ 'listener' ] [ 'logger' ] ? new Reference ( $ typeConfig [ 'listener' ] [ 'logger' ] ) : null ) ; $ listenerConfig = [ 'identifier' => $ typeConfig [ 'identifier' ] , 'indexName' => $ indexName , 'typeName' => $ typeName , ] ; $ tagName = null ; switch ( $ typeConfig [ 'driver' ] ) { case 'orm' : $ tagName = 'doctrine.event_listener' ; break ; case 'phpcr' : $ tagName = 'doctrine_phpcr.event_listener' ; break ; case 'mongodb' : $ tagName = 'doctrine_mongodb.odm.event_listener' ; break ; } if ( $ typeConfig [ 'listener' ] [ 'defer' ] ) { $ listenerDef -> setPublic ( true ) ; $ listenerDef -> addTag ( 'kernel.event_listener' , [ 'event' => 'kernel.terminate' , 'method' => 'onTerminate' ] ) ; $ listenerDef -> addTag ( 'kernel.event_listener' , [ 'event' => 'console.terminate' , 'method' => 'onTerminate' ] ) ; $ listenerConfig [ 'defer' ] = true ; } $ listenerDef -> replaceArgument ( 2 , $ listenerConfig ) ; if ( null !== $ tagName ) { foreach ( $ this -> getDoctrineEvents ( $ typeConfig ) as $ event ) { $ listenerDef -> addTag ( $ tagName , [ 'event' => $ event ] ) ; } } $ container -> setDefinition ( $ listenerId , $ listenerDef ) ; return $ listenerId ; }
Loads doctrine listeners to handle indexing of new or updated objects.

@param array            $typeConfig
@param ContainerBuilder $container
@param string           $objectPersisterId
@param string           $indexName
@param string           $typeName

@return string
Loads doctrine listeners to handle indexing of new or updated objects .