【问题标题】:Yii2 - yii\console\Application::getSession()Yii2 - yii\console\Application::getSession()
【发布时间】:2015-12-09 11:58:55
【问题描述】:

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

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

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

有人可以帮忙吗?

【问题讨论】:

标签: php yii2 console-application yii2-advanced-app


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您不能使用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');
    

    【讨论】:

      【解决方案3】:

      所以我尝试的每个选项都不起作用的原因是我的 Yii2 版本太旧了,我必须升级到最新版本才能让一切正常运行。

      感谢您的帮助。

      【讨论】:

        【解决方案4】:

        在console/config/main.php:

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

        【讨论】:

          猜你喜欢
          • 2016-05-30
          • 1970-01-01
          • 2015-01-28
          • 1970-01-01
          • 1970-01-01
          • 2016-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多