有一个类似的问题询问“如何在模块中创建控制台命令? ”其中包含有关如何将命令添加到 Yii2 模块的一个很好的答案。
但是,生成的命令必须采用以下格式:
./yii module_name/command/sub-command
其中command
与控制台Controller名称相对应,sub-command
并与其Action名称相对应。
我们如何省略控制器名称并让它仅列出操作名称,以便我们的命令采用以下格式:
./yii module_name/command
有一个类似的问题询问“如何在模块中创建控制台命令? ”其中包含有关如何将命令添加到 Yii2 模块的一个很好的答案。
但是,生成的命令必须采用以下格式:
./yii module_name/command/sub-command
其中command
与控制台Controller名称相对应,sub-command
并与其Action名称相对应。
我们如何省略控制器名称并让它仅列出操作名称,以便我们的命令采用以下格式:
./yii module_name/command
我不确定将控制台命令划分为模块并隐藏控制器名称(例如使其成为 DefaultController)的目的是什么。
但无论如何,一种可能的解决方案是controllerMap
在config\console.php
文件中配置(考虑到您使用的是基本模板)。
$config = [
'id' => 'basic-console',
...
'controllerMap' => [
'module_name' => [
'class' => 'app\modules\module_name\commands\ConsoleController',
],
],
...
];
所以现在当你运行时php yii module_name/<action_name>
,它直接调用ConsoleController
动作
..so 即php yii module_name/index
结果到module_name\ConsoleController->actionIndex()
方法