Yii2:如何创建没有控制器名称的模块命令?

Yii2: How to create module commands without controller name?

有一个类似的问题询问“”,其中包含关于如何向 Yii2 模块添加命令的很好的答案。

但是,生成的命令必须采用以下格式:

./yii module_name/command/sub-command

其中command对应控制台Controller名称,sub-command对应其Action名称。

我们如何省略控制器名称并让它仅列出操作名称,以便我们的命令采用以下格式:

./yii module_name/command

我不确定将控制台命令划分为模块并隐藏控制器名称(例如将其设为 DefaultController)的目的是什么。

但无论如何,一种可能的解决方案是在 config\console.php 文件中配置 controllerMap(考虑到您使用的是基本模板)。

$config = [
    'id' => 'basic-console',
    ...
    'controllerMap' => [
        'module_name' => [
            'class' => 'app\modules\module_name\commands\ConsoleController',
        ],
    ],
    ...
];

所以现在当你 运行 php yii module_name/<action_name> 时,它会直接调用 ConsoleController 操作

..所以即 php yii module_name/index 结果为 module_name\ConsoleController->actionIndex() 方法