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

时间:2018-03-18 00:58:05

标签: yii2 yii2-extension yii2-module

有一个类似的问题问“how to create console command in a module?”,它包含了如何向Yii2模块添加命令的一个很好的答案。

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

./yii module_name/command/sub-command

其中command对应控制台控制器名称,sub-command对应其操作名称。

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

./yii module_name/command

1 个答案:

答案 0 :(得分:1)

我不确定将控制台命令划分到模块以及隐藏控制器名称(例如将其设置为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次操作

..因此,php yii module_name/index会导致module_name\ConsoleController->actionIndex()方法