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

hao*_*ang 6 yii2

console command就像./yii hello/world.

我正在使用yii-app-basic.

我想要的不是在dir中创建控制台命令commands/而是在module.

soj*_*oju 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';
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

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

namespace app\modules\my_module\commands;

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

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

'bootstrap' => [
    // ... other bootstrap components ...
    'my_module',
],
'modules' => [
    // ... other modules ...
    'my_module' => [
        'class' => 'app\modules\my_module\Module',
    ],
],
Run Code Online (Sandbox Code Playgroud)

4)您现在可以使用您的命令:

yii my_module/console/index
Run Code Online (Sandbox Code Playgroud)