Undefined property: yii\web\User::$isGuest [ 2.0 版本 ]
有时出现错误:Undefined property: yii\web\User::$isGuest
LoginLog模型里面是这样的
LoginLog模型关键代码
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
if ($insert) {
$this->user_id = $this->user_id? $this->user_id: (Yii::$app->user->isGuest? 0: Yii::$app->user->id);
}
return true;
}
对了 我是通过登录事件触发的
behaviors/AfterLoginBehavior
tangniyuqi 补充于 2017-12-19 18:43
没有大神知道原因吗
tangniyuqi 补充于 2017-12-20 21:03
我是在配置文件main.php的user组件添加登录事件行为:
'user' => [
'identityClass' => 'frontend\models\User',
'identityCookie' => ['name' => '_identityfrontend', 'httpOnly' => true],
'enableAutoLogin' => true,
'loginUrl' => ['user/auth/signin'],
'idParam' => '_frontend',
'on beforeLogin' => function($event) {
},
'as afterLogin' => 'frontend\behaviors\AfterLoginBehavior',
],
AfterLoginBehavior.php
里面是这样的:
namespace frontend\behaviors;
use Yii;
use yii\web\User;
use frontend\models\LoginLog;
class AfterLoginBehavior extends \yii\base\Behavior
{
/**
* @inheritdoc
*/
public $attribute = 'logged_at';
public $coin = 10;
/**
* @inheritdoc
*/
public function events()
{
return [
User::EVENT_AFTER_LOGIN => 'afterLogin',
];
}
/**
* @inheritdoc
*/
public function afterLogin($event)
{
//if ($model = $event->identity->userInfo) {
if ($model = $event->identity) {
$model->login_count += 1;
$model->prev_login_time = $model->last_login_time;
$model->prev_login_ip = $model->last_login_ip;
$model->last_login_time = time();
$model->last_login_ip = Yii::$app->request->userIP;
/* if (!Yii::$app->session->isActive) {
Yii::$app->session->open();
}
$model->session_id = Yii::$app->session->id;
Yii::$app->session->close();*/
if ($model->save()) {
$_model = new LoginLog();
//每天登录赠送1次金币/积分
$today = date('Ymd');
$prevDay = date('Ymd', $model->prev_login_time);
if ($today > $prevDay) {
$_model->coin = $this->coin;
}
$_model->save(false);
return true;
}
}
return false;
}
}
共 3 个回答
-
有时出现?可以说清楚些吗
还有错误代码指向的地方确定是你截图的这段?共 1 条回复tangniyuqi 回复于 2017-12-17 18:46 回复应该叫每次登录cookie过期后出现,代码是这个位置
根据yiidebug查看到的 -
先给$isGuest一个定义试试,public $isGuest;
共 1 条回复tangniyuqi 回复于 2017-12-20 20:37 回复Yii::$app->user->isGuest 这个不是user组件自带的属性吗 怎么还需要定义呢
tangniyuqi 成都
注册时间:2011-12-21
最后登录:2022-08-12
在线时长:18小时1分
最后登录:2022-08-12
在线时长:18小时1分
- 粉丝4
- 金钱370
- 威望0
- 积分550