我正在尝试实现事件,我必须在用户登录时触发事件。
我正在关注此链接 - example using JUnit 4,但是当我登录或退出时没有结果。
public function onUserLogin($event) {
$user = new User;
$user->last_login_on = Carbon::now();
$user->save();
}
/**
* Handle user logout events.
*/
public function onUserLogout($event) {
$user = new User;
$user->last_login_on = Carbon::now();
$user->save();
}
这是subscribe
。
public function subscribe($events)
{
$events->listen(
'App\Events\UserLoggedIn',
'App\Listeners\UserEventListener@onUserLogin'
);
$events->listen(
'App\Events\UserLoggedOut',
'App\Listeners\UserEventListener@onUserLogout'
);
}
虽然,我不知道我应该在这里放什么,App\Events\UserLoggedIn
我可以在哪里举办此活动?
如何使用Events实现此功能?
答案 0 :(得分:5)
您需要倾听的事件是:
这些是Laravel自动触发的事件 - 请参阅 Illuminate \ Auth \ Guard 类,这是您使用验证外观时所获得的。
为了让你的听众工作,你需要做:
$events->listen(
'auth.login',
'App\Listeners\UserEventListener@onUserLogin'
);
$events->listen(
'auth.logout',
'App\Listeners\UserEventListener@onUserLogout'
);
另一种选择是为两个事件定义单独的处理程序类,例如:
class UserEventLoginHandler {
public function handle($event) {
//do some logic here
}
}
class UserEventLogoutHandler {
public function handle($event) {
//do some logic here
}
}
然后在:
中定义侦听器protected $listen = array(
'auth.login' => 'App\Listeners\UserEventLoginListener',
'auth.logout' => 'App\Listeners\UserEventLogoutListener'
);
您也可以使用Laravel的命令生成处理程序 - 有关详细信息,请参阅https://mattstauffer.co/blog/laravel-5.0-events-and-handlers。
答案 1 :(得分:2)
我知道这个问题已经很老了,但要回答最后的评论,以防其他人在同一个问题上挣扎。 您还需要访问onUserLogin和onUserLogout方法中当前登录的用户,因为创建用户模型的新实例会创建新用户,而不是更新当前登录的用户。