tangniyuqi
- tangniyuqi 2018-04-25 已签到连续签到2天,获得了10个金钱
- tangniyuqi 2018-04-24 已签到连续签到1天,获得了5个金钱
- tangniyuqi 2018-03-12 已签到连续签到1天,获得了5个金钱
- tangniyuqi 2018-02-28 已签到连续签到1天,获得了5个金钱
- tangniyuqi 2017-12-22 已签到连续签到1天,获得了5个金钱
我是在配置文件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; } }
- tangniyuqi 回复了 稻草人369 的回答
先给$isGuest一个定义试试,public $isGuest;
Yii::$app->user->isGuest 这个不是user组件自带的属性吗 怎么还需要定义呢
没有大神知道原因吗