如何从模块中运行Yii命令?

时间:2014-02-06 16:09:44

标签: yii yii-modules

运行yiic时,是否可以让我的模块的自定义命令显示在应用程序命令列表中?

cd {yii_protected_folder}
yiic shell {full_path_to_my_yii_protected_folder}/config/console.php

我已尝试将该命令添加到console.php中的commandMap数组中,但该命令从未显示为yiic中的选项。

'commandMap'=>array(
  'passwordtest'=>array(
    'class'=>'application.modules.myModule.commands.shell.passwordtestCommand',
),

我可以将它显示在yiic中的唯一方法是将passwordtestCommand.php文件复制到{yii_protected_folder} / commands / shell /,但我宁愿将文件保存在我的模块中并以某种方式引用它。

2 个答案:

答案 0 :(得分:1)

实际上并不那么难,CConsoleApplication - 类有CConsoleCommandRunner的吸气剂。这又有一个“addCommands()” - 函数,允许您添加路径。只需打开protected/yiic.php并按此更改:

<?php

defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
defined('YII_DEBUG') or define('YII_DEBUG',true);
require_once(dirname(__FILE__).'/../yii/yii.php');

$app = Yii::createConsoleApplication(dirname(__FILE__).'/config/console.php');
$app->commandRunner->addCommands('extraCommandPath');
$app->commandRunner->addCommands('extraCommandPath2');
$app->run();

之后,您不再需要框架中的yiic.php

应该这样做。

答案 1 :(得分:1)

Console.WriteLine(DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssZ"));

这有助于我在Yii 1.x中运行模块命令

只需将其添加到config / console.php或您的其他控制台配置文件中即可。 也改变路径部分&#34; .myModule.commands.shell.passwordtestCommand&#34;

欢呼,它为我工作。