Yii2-yiiconsoleApplication:: getSession()


Я пытаюсь запустить консольное приложение с терминала, но получаю эту ошибку

Calling unknown method: yiiconsoleApplication::getSession()

Это контроллер

class BeanstalkController extends yiiconsoleController {

public function actionIndex() {

    echo 'this is console action';
} }

А это консольная конфигурация

return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'consolecontrollers',
'modules' => [],
'components' => [
    'user' => [
        'class' => 'yiiwebUser',
        'identityClass' => 'commonmodelsUsers',
        'enableAutoLogin' => TRUE,
    ],
    'log' => [
        'targets' => [
            [
                'class' => 'yiilogFileTarget',
                'levels' => ['error', 'warning'],
            ],
        ],
    ],
],
'params' => $params,];

Я попытался удалить сеанс из конфигурации, но по-прежнему получаю ошибку сеанса.

Кто-нибудь может помочь ?

3 2

3 ответа:

Вы не можете использовать Application::getSession(), потому что yii\console\Aplication отличается от веб-приложения.

Http://www.yiiframework.com/doc-2.0/yii-console-application.html

Попробуйте добавить компонент сеанса в вашу конфигурацию.

return [
    'id' => 'app-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'console\controllers',
    'modules' => [],
    'components' => [
        'user' => [
            'class' => 'yii\web\User',
            'identityClass' => 'common\models\Users',
            'enableAutoLogin' => TRUE,
        ],
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'session' => [ 
            'class' => 'yii\web\Session'
        ],
    ],
    'params' => $params,
];

И использовать его в качестве компонента

Yii::$app->session->get('session');

Итак, причина, по которой каждый вариант, который я пробовал, не работает, заключается в том, что моя версия Yii2 старая, мне пришлось обновить ее до последней версии, чтобы все работало идеально.

Спасибо за помощь.

В console/config/main.php:

return [
   'components' => [
       'user' => null,
       // and put there other components which use a PHP-session
    ]
]