Непонятные проблемы с console

Уже исправленные репорты или принятые предложения
Ответить
Аватара пользователя
Singrana
Сообщения: 38
Зарегистрирован: 2013.03.20, 16:43

Непонятные проблемы с console

Сообщение Singrana »

У меня в конфиг консоли подключаются те же модули: что и в web.
До сегодня все работало, и тут внезапно

Код: Выделить всё

/yii
Exception 'yii\base\InvalidParamException' with message 'Invalid path alias: @webroot/assets'

in /wwwroot/trak/vendor/yiisoft/yii2/BaseYii.php:152

Stack trace:
#0 /wwwroot/trak/vendor/yiisoft/yii2/web/AssetManager.php(105): yii\BaseYii::getAlias('@webroot/assets')
#1 /wwwroot/trak/vendor/yiisoft/yii2/base/Object.php(107): yii\web\AssetManager->init()
Путем тыка, было обнаружено, что некоторые модули воспринимаются, а некоторые нет. В общем, подключения типовые

Код: Выделить всё

'admin'                        =>
[
    'class'                    =>    'app\modules\admin\admin',
]
,
Полез разбираться в коде фрейма, что же там такое
Оказалось, что ломается все в yii\console\controllers\HelpController при попытке обхода команд foreach ($this->getCommands() as $command) .
Получилось, что он в список команд собирает ВСЕ контроллеры модулей. и, естественно, при попытке создания контроллера крашится.
Тут вопрос в том, что вышло не так? И как это поправить

Рядом есть чистое приложение, так вот, при подключении модуля в консоле, его контроллеры в карту команд не попадают
Последний раз редактировалось Singrana 2014.05.27, 21:20, всего редактировалось 1 раз.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Непонятные проблемы с console

Сообщение zelenin »

@webroot ведь нет у вас?
Аватара пользователя
Singrana
Сообщения: 38
Зарегистрирован: 2013.03.20, 16:43

Re: Непонятные проблемы с console

Сообщение Singrana »

Есть. Все работало до определенного момента. Frontend работает нормально
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Непонятные проблемы с console

Сообщение zelenin »

Singrana писал(а):Есть. Все работало до определенного момента. Frontend работает нормально
консоль у вас отдельным приложением с отдельным конфигом?
Аватара пользователя
Singrana
Сообщения: 38
Зарегистрирован: 2013.03.20, 16:43

Re: Непонятные проблемы с console

Сообщение Singrana »

У консоли отдельный конфиг - но модули подключены теже

Код: Выделить всё

$config =
[
    'id'                    =>    'trak-console',
    'basePath'                =>    dirname(__DIR__),
    'controllerNamespace'    =>    'app\commands',
    'extensions'            =>    require(__DIR__ . '/../vendor/yiisoft/extensions.php'),
    'components'            =>    $components,
    'modules'                =>    require(__DIR__ . '/modules.php'),
    'params'                =>    require(__DIR__ . '/params.php'),
];
 
Оно работало до последнего момента (миграции создавал через консоль). А сегодня коснулось запустить консоль и она скрашилась. Подключение модулей в дефолтное приложение, взятое с yii2-basic показало, что фронтенд контроллеров там быть не должно, а у меня сейчас консоль тк же пытается отобразить все контроллеры модулей.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Непонятные проблемы с console

Сообщение zelenin »

в yii\console\Application нет @webroot
Аватара пользователя
Singrana
Сообщения: 38
Зарегистрирован: 2013.03.20, 16:43

Re: Непонятные проблемы с console

Сообщение Singrana »

Оно и понятно. Просто непонятно почему консоль начала подтягивать не консольные контроллеры.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Непонятные проблемы с console

Сообщение samdark »

Перепроверьте, была проблема, но вроде поправили.
fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Re: Непонятные проблемы с console

Сообщение fly2k »

да, вроде поправилось, не консольные контроллеры не цепляются...

но вот еще вопрос, а как правильно консольные контроллеры внутри модуля делать? а именно, в какой папке и каком пространстве имен?
хотелось бы, чтобы файл консольного контроллера лежал в modules/<MODULENAME>/commands , но оно тогда не цепляется... если контроллер лежив в modules/<MODULENAME>/controllers то все ок...

но пространство у такого контроллера указано app/modules/<MODULENAME>/controllers, хотя в конфиге для консоли видим:

Код: Выделить всё

...
    'controllerNamespace' => 'app\commands',
...
запутался в общем :) подскажите как нада по уму писать консольные контроллеры внутри модуля
// Yii2Rulez!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Непонятные проблемы с console

Сообщение zelenin »

контроллеры по умолчанию в папке в controllers

сделайте проверку в init модуля

Код: Выделить всё

if (Yii::$app instanceof \yii\console\Application) {
           $this->controllerNamespace = '.....';
        }
 
либо

Код: Выделить всё

if (Yii::$app instanceof \yii\console\Application) {
            if (!isset($app->controllerMap['command'])) {
                $app->controllerMap['command'] = CommandController::className();
            }
        }
 
fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Re: Непонятные проблемы с console

Сообщение fly2k »

zelenin писал(а):контроллеры по умолчанию в папке в controllers
ну в basic app консольные контроллеры в папке commands, и в доках эта папка описана... да и мне лично удобнее, чтобы консольные контроллеры не путались в папке с контроллерами web...
сделайте проверку в init модуля
за пример спасибо, полезно...
// Yii2Rulez!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Непонятные проблемы с console

Сообщение zelenin »

fly2k писал(а): ну в basic app консольные контроллеры в папке commands, и в доках эта папка описана... да и мне лично удобнее, чтобы консольные контроллеры не путались в папке с контроллерами web...
я про модули, а не приложение.
fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Re: Непонятные проблемы с console

Сообщение fly2k »

zelenin писал(а):
fly2k писал(а): ну в basic app консольные контроллеры в папке commands, и в доках эта папка описана... да и мне лично удобнее, чтобы консольные контроллеры не путались в папке с контроллерами web...
я про модули, а не приложение.
так вроде и в модуле структура папок аналогичная: controllers, models, views, etc, не? почему вдруг commands "выкинули"?
в любом случае, мое имхо, что правильнее и красивше и удобнее, держать контроллеры для консоли и веба по отдельности... а уж если и вместе, то тогда чтобы путаницы не было, было бы логичнее тогда и в приложении в одном месте их держать... имхо
// Yii2Rulez!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Непонятные проблемы с console

Сообщение zelenin »

fly2k писал(а):
zelenin писал(а):
fly2k писал(а): ну в basic app консольные контроллеры в папке commands, и в доках эта папка описана... да и мне лично удобнее, чтобы консольные контроллеры не путались в папке с контроллерами web...
я про модули, а не приложение.
так вроде и в модуле структура папок аналогичная: controllers, models, views, etc, не? почему вдруг commands "выкинули"?
в любом случае, мое имхо, что правильнее и красивше и удобнее, держать контроллеры для консоли и веба по отдельности... а уж если и вместе, то тогда чтобы путаницы не было, было бы логичнее тогда и в приложении в одном месте их держать... имхо
вы не разобрались в структуре.
По умолчанию в модуле контроллеры лежат по пути <module>/controllers. В консолльном приложении соответственно тоже. Это означает, что либо для консоли нужно писать другой модуль, либо подменять controllerNamespace.
В basic приложении, насоклько помню, namespace для консоли устанавливается именно через конфиг.
Ответить