Yii2 isGuest 在控制台应用程序中给出异常

Yii2 isGuest giving exception in console application

在控制台应用程序中,当我使用 Yii::$app->user->isGuest 时出现以下异常:

Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown prop
erty: yii\console\Application::user'

我什至尝试在配置文件的组件数组中添加用户。但它没有用。知道我做错了什么吗?

原因很简单。 Guide 说到应用程序组件(用户是一个组件):

user: represents the user authentication information. This component is only available in Web applications Please refer to the Authentication section for more details.

因此 Yii::$app->user 它在控制台应用程序中不可用。

因此,您必须考虑在控制台应用程序也使用的模型 类 中使用此组件。

额外注意:它由 BlameableBehavior 内部使用,但是,这没有问题,因为如果模型获得 saved/created 并且没有用户可用,则用户将为 null。

控制台应用程序 Yii->$app->user 不存在。所以,你需要在config\console.php.

中配置user组件

喜欢,

config\console.php

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

使用以下代码检查它是否有效。

public function actionIndex($message = 'hello world')
{
    echo $message . "\n";
    $session = \Yii::$app->session->set('name', 'ASG');

    if(\Yii::$app->session) // to check session works or not
        echo \Yii::$app->session->get('name')."\n";

    print_R(\Yii::$app->user);
}

关于您的问题的更多信息:Link

注意:控制台中没有会话。