Returns the sub-modules in this module.
public getModules ( boolean $loadedOnly = false ) : array | ||
$loadedOnly | boolean | whether to return the loaded sub-modules only. If this is set `false`, then all sub-modules registered in this module will be returned, whether they are loaded or not. Loaded modules will be returned as objects, while unloaded modules as configuration arrays. |
return | array | the modules (indexed by their IDs). |
/** * * @param \yii\base\Module $module * @param array $result */ private static function getRouteRecrusive($module, &$result) { foreach ($module->getModules() as $id => $child) { if (($child = $module->getModule($id)) !== null) { self::getRouteRecrusive($child, $result); } } /* @var $controller \yii\base\Controller */ foreach ($module->controllerMap as $id => $value) { $controller = Yii::createObject($value, [$id, $module]); self::getActionRoutes($controller, $result); $result[] = '/' . $controller->uniqueId . '/*'; } $namespace = trim($module->controllerNamespace, '\\') . '\\'; self::getControllerRoutes($module, $namespace, '', $result); $result[] = ($module->uniqueId === '' ? '' : '/' . $module->uniqueId) . '/*'; }
/** * Returns available commands of a specified module. * @param \yii\base\Module $module the module instance * @return array the available command names */ protected function getModuleCommands($module) { $prefix = $module instanceof Application ? '' : $module->getUniqueId() . '/'; $commands = []; foreach (array_keys($module->controllerMap) as $id) { $commands[] = $prefix . $id; } foreach ($module->getModules() as $id => $child) { if (($child = $module->getModule($id)) === null) { continue; } foreach ($this->getModuleCommands($child) as $command) { $commands[] = $command; } } $controllerPath = $module->getControllerPath(); if (is_dir($controllerPath)) { $files = scandir($controllerPath); foreach ($files as $file) { if (!empty($file) && substr_compare($file, 'Controller.php', -14, 14) === 0) { $controllerClass = $module->controllerNamespace . '\\' . substr(basename($file), 0, -4); if ($this->validateControllerClass($controllerClass)) { $commands[] = $prefix . Inflector::camel2id(substr(basename($file), 0, -14)); } } } } return $commands; }
/** * Returns available commands of a specified module. * @param \yii\base\Module $module the module instance * @return array the available command names */ protected function getModuleCommands($module) { $prefix = $module instanceof Application ? '' : $module->getUniqueID() . '/'; $commands = []; foreach (array_keys($module->controllerMap) as $id) { $commands[] = $prefix . $id; } foreach ($module->getModules() as $id => $child) { if (($child = $module->getModule($id)) === null) { continue; } foreach ($this->getModuleCommands($child) as $command) { $commands[] = $command; } } $controllerPath = $module->getControllerPath(); if (is_dir($controllerPath)) { $files = scandir($controllerPath); foreach ($files as $file) { if (strcmp(substr($file, -14), 'Controller.php') === 0) { $commands[] = $prefix . Inflector::camel2id(substr(basename($file), 0, -14)); } } } return $commands; }
/** * Configures given module with provided configuration array. * @param \yii\base\Module $module module to be configured. * @param array $config configuration array. */ public function configure($module, $config = null) { if ($config === null) { $config = $this->fetchConfig(); } foreach ($config as $key => $value) { switch ($key) { case 'components': $components = array_merge($module->getComponents(true), $module->getComponents(false)); $components = ArrayHelper::merge($components, $value); $module->setComponents($components); break; case 'modules': $nestedModules = $module->getModules(false); foreach ($nestedModules as $id => $nestedModule) { if (!isset($value[$id])) { continue; } if (is_object($nestedModule)) { $this->configure($nestedModule, $value[$id]); } else { $nestedModules[$id] = ArrayHelper::merge($nestedModule, $value[$id]); } } $module->setModules($nestedModules); break; case 'params': $module->params = ArrayHelper::merge($module->params, $value); break; default: $module->{$key} = $value; } } }
/** * * @param \yii\base\Module $module * @param array $result */ private static function getRouteRecrusive($module, &$result, $exclude) { foreach ($module->getModules() as $id => $child) { if (($child = $module->getModule($id)) !== null) { if (!in_array($child->id, $exclude['module'])) { self::getRouteRecrusive($child, $result, $exclude); } } } /* @var $controller \yii\base\Controller */ foreach ($module->controllerMap as $id => $value) { $controller = Yii::createObject($value, [$id, $module]); if (!in_array($controller->module->id, $exclude['module']) && !in_array($controller->id, $exclude['controller'])) { self::getActionRoutes($controller, $result); //$result[$controller->module->id][$controller->id][] = '*'; //$result['map'][$controller->module->id]['*'][] = '*'; /* $result['map'][] = [ 'module' => $controller->module->id, 'controller' => $controller->id, 'action' => '*', ]; //*/ } } if (!in_array($module->id, $exclude['module'])) { $namespace = trim($module->controllerNamespace, '\\') . '\\'; self::getControllerRoutes($module, $namespace, '', $result, $exclude); //$result[$module->id]['*'] = '*'; //$result['map'][$controller->module->id]['*'][] = '*'; /* $result['model'][] = [ 'module' => $module->id, 'controller' => '*', 'action' => '*', ]; //*/ } }