Я создал поведение, которое содержит функцию. Эта функция должна выполняться после входа в систему пользователя (yii/web/User::EVENT_AFTER_LOGIN). Но эта функция никогда не сработает, к сожалению.
У меня есть класс Behavior для пользовательской модели:
class UserBehavior extends Behavior
{
/**
* @inheritdoc
* @param \yii\base\Component $owner
*/
public function attach($owner)
{
parent::attach($owner);
$owner->on(\yii\web\User::EVENT_AFTER_LOGIN, [$this, 'updateLoginInformation']);
}
/**
* Update login information data:
* - login ip address
* - login time
*/
public function updateLoginInformation()
{
/** @var \common\models\User $owner */
$owner = $this->owner;
$owner->logged_in_ip = Yii::$app->request->getUserIP();
$owner->logged_in_at = time();
$owner->save();
}
}
Я объявил события и аттач тоже. Но эти события никогда не запускаются после входа в систему...
Я привязал это поведение к пользовательской модели:
/**
* @inheritdoc
*/
public function behaviors()
{
return [
TimestampBehavior::className(),
UserBehavior::className()
];
}
Если я хорошо знаю, что EVENT_AFTER_LOGIN будет автоматически запускаться фреймворком Yii, именно по этой причине я не запускаю его снова.
И я не в чем проблема, потому что updageLoginInformatin
никогда не звонил.