has('ServiceListener')) { $serviceLocator->setFactory('ServiceListener', 'Zend\Mvc\Service\ServiceListenerFactory'); } $configuration = $serviceLocator->get('ApplicationConfig'); $listenerOptions = new ListenerOptions($configuration['module_listener_options']); $defaultListeners = new DefaultListenerAggregate($listenerOptions); $serviceListener = $serviceLocator->get('ServiceListener'); $serviceListener->addServiceManager( $serviceLocator, 'service_manager', 'Zend\ModuleManager\Feature\ServiceProviderInterface', 'getServiceConfig' ); $serviceListener->addServiceManager( 'ControllerLoader', 'controllers', 'Zend\ModuleManager\Feature\ControllerProviderInterface', 'getControllerConfig' ); $serviceListener->addServiceManager( 'ControllerPluginManager', 'controller_plugins', 'Zend\ModuleManager\Feature\ControllerPluginProviderInterface', 'getControllerPluginConfig' ); $serviceListener->addServiceManager( 'ViewHelperManager', 'view_helpers', 'Zend\ModuleManager\Feature\ViewHelperProviderInterface', 'getViewHelperConfig' ); $serviceListener->addServiceManager( 'ValidatorManager', 'validators', 'Zend\ModuleManager\Feature\ValidatorProviderInterface', 'getValidatorConfig' ); $serviceListener->addServiceManager( 'FilterManager', 'filters', 'Zend\ModuleManager\Feature\FilterProviderInterface', 'getFilterConfig' ); $serviceListener->addServiceManager( 'FormElementManager', 'form_elements', 'Zend\ModuleManager\Feature\FormElementProviderInterface', 'getFormElementConfig' ); $serviceListener->addServiceManager( 'RoutePluginManager', 'route_manager', 'Zend\ModuleManager\Feature\RouteProviderInterface', 'getRouteConfig' ); $serviceListener->addServiceManager( 'SerializerAdapterManager', 'serializers', 'Zend\ModuleManager\Feature\SerializerProviderInterface', 'getSerializerConfig' ); $serviceListener->addServiceManager( 'HydratorManager', 'hydrators', 'Zend\ModuleManager\Feature\HydratorProviderInterface', 'getHydratorConfig' ); $serviceListener->addServiceManager( 'InputFilterManager', 'input_filters', 'Zend\ModuleManager\Feature\InputFilterProviderInterface', 'getInputFilterConfig' ); $events = $serviceLocator->get('EventManager'); $events->attach($defaultListeners); $events->attach($serviceListener); $moduleEvent = new ModuleEvent; $moduleEvent->setParam('ServiceManager', $serviceLocator); $moduleManager = new ModuleManager($configuration['modules'], $events); $moduleManager->setEvent($moduleEvent); return $moduleManager; } }