0

当您运行 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/,但我宁愿将文件保留在我的模块中并以某种方式引用它。

4

2 回答 2

1

这实际上并不难,CConsoleApplication-class 有一个用于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框架中的。

那应该这样做。

于 2014-02-06T18:10:14.977 回答
1
'commandMap'=>array(
  'passwordtest'=>array(
    'class'=>'application.modules.myModule.commands.shell.passwordtestCommand',
),

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

只需将其添加到 config/console.php 或您不同的控制台配置文件中。还要更改路径部分“.myModule.commands.shell.passwordtestCommand”

欢呼,它对我有用。

于 2016-01-21T13:47:18.613 回答