@evilelf
Тупой, руки из жопы, кодю за зп и т.п. и т.д.

Как сделать свои команды в консоле yii2?

Всем привет!

Как сделать, чтоб yii2 увидел все контроллеры и экшены в модуле?
Контроллеры лежат в commands.

код модуля:

namespace app\modules\google;
use Yii;
use \yii\base\BootstrapInterface;
/**
 * google module definition class
 */
class GoogleModule extends \yii\base\Module implements \yii\base\BootstrapInterface
{
    /**
     * @inheritdoc
     */
    public $controllerNamespace = 'app\modules\google\controllers';

    /**
     * @inheritdoc
     */
    public function init()
    {
        parent::init();

        // custom initialization code goes here
    }
    
    public function bootstrap($app)
    {
        if ($app instanceof \yii\console\Application) {
            $this->controllerNamespace = 'app\modules\google\commands';
        }
    }
}



Прописал в config/console.php где bootstrap и где modules, но консоль выдает ошибку: Exception 'yii\base\InvalidConfigException' with message 'Missing required parameter "id" when instantiating "app\modules\google\GoogleModule".'

хочу чтоб было так: при вызове ./yii help google мне вывелись все доступные контроллеры и методы

config/console.php

$config = [
    'id' => 'test-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => [
    	'log',
    	'google',
	],
	'sourceLanguage'=> 'en',
	'language' => 'ru',
    'controllerNamespace' => 'app\commands',
    'components' => [
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
//		'google' => [
//			'id' => 'google',
//			'class' => 'app\modules\google\GoogleModule',
//		],
//		'urlManager' => [
//			'enablePrettyUrl' => true,
//			'showScriptName' => false,
//			'rules' => [
//				'google/accounts' => 'google/accounts/index',
//			],
//		],
    ],
	'modules' => [
		'google' => [
			'id' => 'google',
			'class' => 'app\modules\google\GoogleModule',
		]
	],
    'params' => $params,
    'controllerMap' => [
    	'google_accounts' => [
			'class' => 'app\modules\google\commands\AccountsController',
		],
		'google_campaigns' => [
			'class' => 'app\modules\google\commands\CampaignsController',
		],
//        'fixture' => [ // Fixture generation command line.
//            'class' => 'yii\faker\FixtureController',
//        ],
    ],

];

  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы