Getting all module names in zf2

php, zend-framework, zend-framework2

Solution

Try this,

$manager        = $this->getServiceLocator()->get('ModuleManager');
$modules        = $manager->getLoadedModules();
$loadedModules      = array_keys($modules);
$skipActionsList    = array('notFoundAction', 'getMethodFromAction');

foreach ($loadedModules as $loadedModule) {
    $moduleClass = '\\' .$loadedModule . '\Module';
    $moduleObject = new $moduleClass;
    $config = $moduleObject->getConfig();

    $controllers = $config['controllers']['invokables'];
    foreach ($controllers as $key => $moduleClass) {
        $tmpArray = get_class_methods($moduleClass);
        $controllerActions = array();
        foreach ($tmpArray as $action) {
            if (substr($action, strlen($action)-6) === 'Action' && !in_array($action, $skipActionsList)) {
                $controllerActions[] = $action;
            }
        }

        echo $loadedModule . "\n";
        echo $moduleClass . "\n";
        print_r($controllerActions);
    }
}

Problem

I want to list all the modules , controllers and actions included in my project for acl purpose. But i dont know how can i fetch such information from zf2. Anyone has an idea of how to make this work? ThankYou :)

Original source