Привет, смотрите я создал новый модуль в проекте:
common/modules/supermodule/Module.php
Ну и сопутствующие для него файлы (commands, config и т.д)
Сам модуль выглядит примерно так:
Module.php
<?php
namespace Company\Modules\Operations;
use Yii;
use yii\base\BootstrapInterface;
use yii\console\Application as ConsoleApplication;
class Module extends \yii\base\Module implements BootstrapInterface
{
/**
* {@inheritdoc}
*/
public $controllerNamespace = 'Company\Modules\Operations\commands';
/**
* {@inheritdoc}
*/
public function init()
{
parent::init();
Yii::configure($this, require __DIR__ . '/config/config.php');
}
/**
* {@inheritdoc}
*/
public function bootstrap($app)
{
if ($app instanceof ConsoleApplication) {
$this->controllerNamespace = 'Company\Modules\Operations\commands';
} else {
$this->controllerNamespace = 'Company\Modules\Operations\controllers';
}
}
}
Потом я добавил в него
common/modules/supermodule/composer.json
Где прописал namespace:
"autoload": {
"psr-4": {
"Company\\Modules\\Operations\\": ""
}
}
Далее создаю в
common/modules/supermodule/commands
новый файл
TestController.php
Содержимое простое:
<?php
namespace Company\Modules\Operations\commands;
use yii\helpers\Console;
class TestController extends \yii\console\Controller
{
public function actionIndex()
{
Console::output('Hello world!');
}
}
Теперь этот модуль я выношу в отдельный репозиторий и подключаю его как
git submodule
А в основном composer.json указываю namespace где искать его.
Основной composer проекта"autoload": {
"psr-4": {
"Company\\Modules\\Operations\\": "common/modules/Operations/"
}
},
.gitmodules
[submodule "common/modules/Operations"]
path = common/modules/Operations
url = ssh://git@gitlab...../module-operations.git
Если запустить выполнение этой команды то все окей все работает я получаю Hello World!:
php yii operation/test
Ошибка появляется когда вводишь
php yii
или
php yii help
чтобы посмотреть описание команд которые есть.
Сама ошибка вот:
Стек ошибки
Exception 'yii\base\InvalidArgumentException' with message 'Invalid path alias: @Company/Modules/Operations/commands'
in /app/vendor/yiisoft/yii2/BaseYii.php:154
Stack trace:
#0 /app/vendor/yiisoft/yii2/base/Module.php(257): yii\BaseYii::getAlias('@Company/M...')
#1 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(245): yii\base\Module->getControllerPath()
#2 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(240): yii\console\controllers\HelpController->getModuleCommands(Object(Company\Modules\Operations\Module))
#3 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(172): yii\console\controllers\HelpController->getModuleCommands(Object(yii\console\Application))
#4 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(192): yii\console\controllers\HelpController->getCommands()
#5 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(292): yii\console\controllers\HelpController->getCommandDescriptions()
#6 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(67): yii\console\controllers\HelpController->getDefaultHelp()
#7 [internal function]: yii\console\controllers\HelpController->actionIndex(NULL)
#8 /app/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#9 /app/vendor/yiisoft/yii2/base/Controller.php(180): yii\base\InlineAction->runWithParams(Array)
#10 /app/vendor/yiisoft/yii2/console/Controller.php(181): yii\base\Controller->runAction('', Array)
#11 /app/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction('', Array)
#12 /app/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('', Array)
#13 /app/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('', Array)
#14 /app/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))
#15 /app/console/yii(28): yii\base\Application->run()
#16 {main}
Exception 'yii\base\InvalidArgumentException' with message 'Invalid path alias: @Company/Modules/Operations/commands'
Почему он из namespace пытается сделать алиас ?
И как это поправить ?