1
我有一些功能,我想添加到yii\console\controllers\MessageController::actionExtract()
。Yii2扩展控制台MessageController
所以通常我所做的 - 用我自己的控制器扩展yii控制器,并将其放到app\commands
目录中。
<?php
namespace app\commands;
class MessageController extends \yii\console\controllers\MessageController{ /* .. */ }
为了测试目的,我添加了方法名为actionTest
。
当我做> yii
命令,我得到的是
现在我复制粘贴完全相同控制器,只是它重命名为MsgController
。先前的控制器保持完好。
所以现在> yii
给我
警予消息/测试 - '未知的命令消息/测试'
警予味精/测试 - “OK '
我的应用程序\设置\ console.php有'controllerNamespace' => 'app\commands'
我应该如何正确地延伸MessageController并继续使用标准的警予命令(指不改变控制器的名称有新的命令)?
你能解释一下我们什么时候需要使用'controllerMap'为什么Yii的不*见*同名我的扩展类? – Justinas
控制台应用程序默认为[启用](https://github.com/yiisoft/yii2/blob/2.0.11.2/framework/console/Application.php#L76)核心命令和[maps](https:// github。 com/yiisoft/yii2/blob/2.0.11.2/framework/console/Application.php#L128)它们放在'$ controllerMap'中。当你使用相同的名称添加你的控制器时,它将在地图列表中被覆盖,所以你需要重写它(或者在console \ Application中关闭$ enableCoreCommands)。 – Bizley