ews2001
ews2001

Reputation: 2187

How do you run a Yii command from within your Module?

Is it possible to have my module's custom commands show up in the list of application commands when you run yiic?

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

I've tried adding the command into the commandMap array in console.php, but the command never shows up as an option in yiic.

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

The only way I can make it show up in yiic is to copy the passwordtestCommand.php file to {yii_protected_folder}/commands/shell/, but I'd rather keep the file within my module and reference it somehow.

Upvotes: 0

Views: 2532

Answers (2)

Boy.Lee
Boy.Lee

Reputation: 155

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

this help me with run module command in Yii 1.x

just add it into config/console.php or your different console config file. also change the path part ".myModule.commands.shell.passwordtestCommand"

cheer, it's working for me.

Upvotes: 1

Blizz
Blizz

Reputation: 8408

It's actually not that hard, the CConsoleApplication-class has a getter for the CConsoleCommandRunner. This in its turn has an "addCommands()"-function that allows you to add paths. Just open up your protected/yiic.php and change it by this:

<?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();

After that you no longer require the yiic.php from the framework.

That should do it.

Upvotes: 1

Related Questions