The module has been generated successfully.
To access the module, you need to add this to your application configuration:
EOD;
$code = << [
'{$this->moduleID}' => [
'class' => '{$this->moduleClass}',
],
],
......
EOD;
return $output . '' . highlight_string($code, true) . '
';
}
/**
* {@inheritdoc}
*/
public function requiredTemplates()
{
return ['module.php', 'controller.php', 'view.php'];
}
/**
* {@inheritdoc}
*/
public function generate()
{
$files = [];
$modulePath = $this->getModulePath();
$files[] = new CodeFile(
$modulePath . '/' . StringHelper::basename($this->moduleClass) . '.php',
$this->render("module.php")
);
$files[] = new CodeFile(
$modulePath . '/controllers/DefaultController.php',
$this->render("controller.php")
);
$files[] = new CodeFile(
$modulePath . '/views/default/index.php',
$this->render("view.php")
);
return $files;
}
/**
* Validates [[moduleClass]] to make sure it is a fully qualified class name.
*/
public function validateModuleClass()
{
if (empty($this->moduleClass) || substr_compare($this->moduleClass, '\\', -1, 1) === 0) {
$this->addError('moduleClass', 'Module class name must not be empty. Please enter a fully qualified class name. e.g. "app\modules\admin\Module".');
}
if (strpos($this->moduleClass, '\\') === false || Yii::getAlias('@' . str_replace('\\', '/', $this->moduleClass), false) === false) {
$this->addError('moduleClass', 'Module class must be properly namespaced.');
}
}
/**
* @return string the directory that contains the module class
*/
public function getModulePath()
{
return Yii::getAlias('@' . str_replace('\\', '/', substr($this->moduleClass, 0, strrpos($this->moduleClass, '\\'))));
}
/**
* @return string the controller namespace of the module.
*/
public function getControllerNamespace()
{
return substr($this->moduleClass, 0, strrpos($this->moduleClass, '\\')) . '\controllers';
}
}