Yii2是在控制台应用程序中给出异常的来宾

Yii2是在控制台应用程序中给出异常的来宾,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,在控制台应用程序中,当我使用Yii::$app->user->isGuest时,它给出了以下异常: Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown prop erty: yii\console\Application::user' 我甚至尝试在配置文件的组件数组中添加用户。但它不起作用。知道我做错了什么吗?原因很简单。说明应用程序组件(用户是组件): 用户:表示用户身份验证信息。此组件 仅在

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

Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown prop
erty: yii\console\Application::user'
我甚至尝试在配置文件的组件数组中添加用户。但它不起作用。知道我做错了什么吗?

原因很简单。说明应用程序组件(用户是组件):

用户:表示用户身份验证信息。此组件 仅在Web应用程序中可用。请参阅 验证部分了解更多详细信息

所以
Yii::$app->user
它在控制台应用程序中不可用

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


额外注意:它是由内部使用的,但是,这不会造成任何问题,因为如果保存/创建了模型,并且没有可用的用户,则用户将为空。

在控制台应用程序
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);
}
有关您的问题的更多信息:


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

请发布配置文件