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()
方法
有一个类似的问题询问“
但是,生成的命令必须采用以下格式:
./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()
方法