mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 04:37:42 +08:00
Fixes #2821: Console help command incorrectly lists non-console controllers as available commands
This commit is contained in:
@ -157,7 +157,10 @@ class HelpController extends Controller
|
||||
$files = scandir($controllerPath);
|
||||
foreach ($files as $file) {
|
||||
if (strcmp(substr($file, -14), 'Controller.php') === 0) {
|
||||
$commands[] = $prefix . Inflector::camel2id(substr(basename($file), 0, -14));
|
||||
$controllerClass = $module->controllerNamespace . '\\' . substr(basename($file), 0, -4);
|
||||
if ($this->validateControllerClass($controllerClass)) {
|
||||
$commands[] = $prefix . Inflector::camel2id(substr(basename($file), 0, -14));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -165,6 +168,21 @@ class HelpController extends Controller
|
||||
return $commands;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates if the given class is a valid console controller class.
|
||||
* @param string $controllerClass
|
||||
* @return bool
|
||||
*/
|
||||
protected function validateControllerClass($controllerClass)
|
||||
{
|
||||
if (class_exists($controllerClass)) {
|
||||
$class = new \ReflectionClass($controllerClass);
|
||||
return !$class->isAbstract() && $class->isSubclassOf('yii\console\Controller');
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all available commands.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user