Carga de módulos dinámicamente en Zend Framework 2

Ayer también hice esta pregunta, pero esta incluye código.

Problema

Mi aplicación tiene múltiples módulos y 2 tipos de cuentas de usuario, algunos módulos están cargadosalways que están presentes enapplication.config.php algunos de ellos sonconditional es decir, algunos se cargan para el usuariotype A y algunos para el usuariotype B

Después de pasar por documentaciones y preguntas sobre Stack Overflow, entiendo algunas de las funcionalidades de ModuleManager y comencé a implementar la lógica que podría funcionar.

De alguna manera, descubrí una forma de cargar los módulos que no están presentes enapplication.config.php [ÉXITO] pero su configuración no funciona[LA CUESTIÓN] es decir, si enonBootstrap método consigo elModuleManager servicio y hacergetLoadedModules() Me sale la lista de todos los módulos cargados correctamente. Luego, si trato de obtener algún servicio de ese módulo cargado dinámicamente, arroja una excepción.

Zend \ ServiceManager \ ServiceManager :: get no pudo recuperar ni crear una instancia para jobs_mapper

Tenga en cuenta que las fábricas y todas las demás cosas están perfectamente bien porque si cargo el módulo desde application.config.php funciona bien

Del mismo modo, cuando intento acceder a cualquier ruta desde el módulo cargado dinámicamente, arroja404 Not Found lo que dejó en claro que la configuración de module.config.php de estos módulos no se está cargando aunque ModuleManager cargue el módulo.

Código

En Module.php de mi módulo de Aplicación implementéInitProviderInterface y agregó un métodoinit(ModuleManager $moduleManager) donde tomo el módulo de activación loadModules.post moduleManager y carga módulos

public function init(\Zend\ModuleManager\ModuleManagerInterface $moduleManager)
{
    $eventManager = $moduleManager->getEventManager();
    $eventManager->attach(\Zend\ModuleManager\ModuleEvent::EVENT_LOAD_MODULES_POST, [$this, 'onLoadModulesPost']);
}

Luego, en la misma clase, descuido el métodoonLoadModulesPost y empiezo a cargar mis módulos dinámicos

public function onLoadModulesPost(\Zend\ModuleManager\ModuleEvent $event)
{

    /* @var $serviceManager \Zend\ServiceManager\ServiceManager */
    $serviceManager = $event->getParam('ServiceManager');
    $configListener = $event->getConfigListener();

    $authentication = $serviceManager->get('zfcuser_auth_service');

    if ($authentication->getIdentity())
    {
        $moduleManager = $event->getTarget();

        ...
        ...

        $loadedModules = $moduleManager->getModules();
        $configListener = $event->getConfigListener();
        $configuration = $configListener->getMergedConfig(false);

        $modules = $modulesMapper->findAll(['is_agency' => 1, 'is_active' => 1]);

        foreach ($modules as $module)
        {
            if (!array_key_exists($module['module_name'], $loadedModules))
            {
                $loadedModule = $moduleManager->loadModule($module['module_name']);

                //Add modules to the modules array from ModuleManager.php
                $loadedModules[] = $module['module_name'];

                //Get the loaded module
                $module = $moduleManager->getModule($module['module_name']);

                //If module is loaded succesfully, merge the configs
                if (($loadedModule instanceof ConfigProviderInterface) || (is_callable([$loadedModule, 'getConfig'])))
                {
                    $moduleConfig = $module->getConfig();
                    $configuration = ArrayUtils::merge($configuration, $moduleConfig);
                }
            }
        }

        $moduleManager->setModules($loadedModules);
        $configListener->setMergedConfig($configuration);
        $event->setConfigListener($configListener);
    }
}
Preguntas¿Es posible lograr lo que estoy intentando?Si es así, ¿cuál es la mejor manera?¿Qué me falta en mi código?

Respuestas a la pregunta(2)

Su respuesta a la pregunta