如何在模块中创建控制台命令?

时间:2015-09-22 07:35:56

标签: yii2

console command,例如./yii hello/world

我正在使用yii-app-basic

我想要的不是在目录commands/中创建控制台命令,而是在module中。

2 个答案:

答案 0 :(得分:7)

1)您的模块应该实现BootstrapInterface

class Module extends \yii\base\Module implements \yii\base\BootstrapInterface
{

    public function bootstrap($app)
    {
        if ($app instanceof \yii\console\Application) {
            $this->controllerNamespace = 'app\modules\my_module\commands';
        }
    }

}

2)在模块commands文件夹中创建控制台控制器

namespace app\modules\my_module\commands;

class ConsoleController extends \yii\console\Controller
{
    public function actionIndex()
    {
        echo "Hello World\n";
    }
}

3)将您的模块添加到您的应用控制台配置config/console.php

'bootstrap' => [
    // ... other bootstrap components ...
    'my_module',
],
'modules' => [
    // ... other modules ...
    'my_module' => [
        'class' => 'app\modules\my_module\Module',
    ],
],

4)您现在可以使用命令

yii my_module/console/index

答案 1 :(得分:4)

这是一个很好的TutorialDiscussion

按照教程中的以下步骤进行操作:

1) Create a new module in your application. 
2) Edit the Module.php. 
3) Create your folder and command inside your module. 
4) Add your module to app configurations.