Yii2-正在获取未知属性:yiicoconsoleApplication::user


Yii2 - Getting unknown property: yiiconsoleApplication::user

我正试图从终端运行控制台控制器,但每次都会出现此错误

Error: Getting unknown property: yii'console'Application::user

这是控制器

class TestController 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' => [
    'log' => [
        'targets' => [
            [
                'class' => 'yii'log'FileTarget',
                'levels' => ['error', 'warning'],
            ],
        ],
    ],
],
'params' => $params];

我尝试使用这些命令运行它,但没有运气

php yii test/index
php yii test
php ./yii test

有人能帮忙吗?

Console应用程序没有Yii->$app->user。因此,您需要在config'console.php中配置user组件。

config''coconsole.php

 'components' => [
 .........
 ......
        'user' => [
            'class' => 'yii'web'User',
            'identityClass' => 'app'models'User',
            //'enableAutoLogin' => true,
        ],
        'session' => [ // for use session in console application
            'class' => 'yii'web'Session'
        ],
 .......
]

有关您的问题的更多信息,请参阅:链接

访问以下链接:Yii2 isGuest在控制台应用程序中给出异常

注意:控制台应用程序中没有会话。

在''coconsole''config''main.php 中设置

return [
    'id' => 'app-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'console'controllers',
    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii'log'FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'user' => [
            'class' => 'yii'web'User',
            'identityClass' => 'app'models'Credential',// class that implements IdentityInterface
        //'enableAutoLogin' => true,
        ],
    ],
    'params' => $params,
];

现在在您的''控制台''控制器'' AbcController.php中添加init方法

 public function init() {
        parent::init();
        Yii::$app->user->setIdentity(Credential::findOne(['id'=><cronloginid>]));
    }

创建一个cron登录,并将该登录id传递到变量中。使用此配置,yii2的BlameableBehavior将在

中工作

正如@GAMITG所说,您必须在配置文件中配置用户组件,但不幸的是,您无法访问控制台中的会话,这是因为会话在控制台中不可用。也许你可以解决这样的问题:

$user_id = isset(Yii::$app->user->id) ? Yii::$app->user->id : 0;
相关文章:
  • 没有找到相关文章