Ошибка Cron: исключение 'yii \ base \ InvalidConfigException' с сообщением 'Конфигурация для компонента "пользователь" должна содержать элемент "класс". " - PullRequest
0 голосов
/ 28 января 2019

Я следовал за кодом этой страницы https://www.yiiframework.com/wiki/646/how-to-implement-cron-in-yii-2

И я тестирую cron, но не могу

$ php yii test / index

Исключение 'yii \ base \ InvalidConfigException' сmessage 'Конфигурация для компонента "пользователь" должна содержать элемент "класс". "

в /var/www/yiidemo/vendor/yiisoft/yii2/di/ServiceLocator.php:205

Трассировка стека:

#0 /var/www/yiidemo/vendor/yiisoft/yii2/di/ServiceLocator.php(261): yii\di\ServiceLocator->set('user', Array)
#1 /var/www/yiidemo/vendor/yiisoft/yii2/base/Component.php(180): yii\di\ServiceLocator->setComponents(Array)
#2 /var/www/yiidemo/vendor/yiisoft/yii2/BaseYii.php(546): yii\base\Component->__set('components', Array)
#3 /var/www/yiidemo/vendor/yiisoft/yii2/base/BaseObject.php(107): yii\BaseYii::configure(Object(yii\console\Application), Array)
#4 /var/www/yiidemo/vendor/yiisoft/yii2/base/Application.php(206): yii\base\BaseObject->__construct(Array)
#5 /var/www/yiidemo/vendor/yiisoft/yii2/console/Application.php(89): yii\base\Application->__construct(Array)
#6 /var/www/yiidemo/yii(26): yii\console\Application->__construct(Array)
#7 {main}

Я использую Yii2, mongdb

Мой файл console / config / main.php

$params = array_merge(
    require __DIR__ . '/../../common/config/params.php', 
    require __DIR__ . '/../../common/config/params-local.php', 
    require __DIR__ . '/params.php', 
    require __DIR__ . '/params-local.php'
);

return [
    'id' => 'app-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'console\controllers',
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
    ],
    'controllerMap' => [
        'fixture' => [
            'class' => 'yii\console\controllers\FixtureController',
            'namespace' => 'common\fixtures',
        ],
    ],
    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
         'user' => [
             'identityClass' => 'common\models\User',
             'enableAutoLogin' => true,
         ]
    ],
    'params' => $params,
];

1 Ответ

0 голосов
/ 29 января 2019

Обновление

Обратите внимание, что в консольном приложении нет сессий, поэтому вам не нужно добавлять компонент session, если есть, удалите их.


Поскольку user не определено в консольных приложениях, class требуется.В веб-приложении это определено по умолчанию, поэтому можно переопределить только некоторые свойства, основываясь на значениях по умолчанию.Вам необходимо удалить следующий раздел

'user' => [
      'identityClass' => 'common\models\User',
      'enableAutoLogin' => true,
 ]

или добавить class для пользовательского компонента

'user' => [
      'class' => 'yii\web\User',
      'identityClass' => 'common\models\User',
 ]

в console/config/main.php и локальный файл конфигурации console/config/main-local.php.

...