Yii2 - yii\console\Application::getSession()

Yii2 - yii\console\Application::getSession()

我正在尝试从终端 运行 控制台应用程序,但收到此错误

Calling unknown method: yii\console\Application::getSession()

这是控制器

class BeanstalkController extends \yii\console\Controller {

public function actionIndex() {

    echo 'this is console action';
} }

这是控制台配置

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'],
            ],
        ],
    ],
],
'params' => $params,];

我尝试从配置中删除会话,但仍然收到会话错误。

有人可以帮忙吗?

您不能使用 Application::getSession(),因为 yii\console\Aplication 不同于 Web 应用程序。

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
    ]
]

控制台环境中的正确配置是:

'components' => [
            'user' => [
                'class' => 'yii\web\User',
                'identityClass' => 'app\models\User',
                'enableSession' => false,
                'enableAutoLogin' => false,
            ],
        ],