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
注意:控制台中没有会话。
在控制台应用程序中,当我使用 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
注意:控制台中没有会话。