1

有一个类似的问题询问“如何在模块中创建控制台命令? ”其中包含有关如何将命令添加到 Yii2 模块的一个很好的答案。

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

./yii module_name/command/sub-command

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

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

./yii module_name/command

4

1 回答 1

1

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

但无论如何,一种可能的解决方案是controllerMapconfig\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()方法

于 2018-03-19T11:27:15.697 回答