nir*_*air 1 php laravel laravel-5 laravel-5.1
我正在尝试实现事件,我必须在用户登录时触发事件.
我正在关注此链接 - http://laravel.com/docs/5.1/events#event-subscribers,但是当我登录或注销时没有结果.
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();
}
Run Code Online (Sandbox Code Playgroud)
这就是subscribe.
public function subscribe($events)
{
$events->listen(
'App\Events\UserLoggedIn',
'App\Listeners\UserEventListener@onUserLogin'
);
$events->listen(
'App\Events\UserLoggedOut',
'App\Listeners\UserEventListener@onUserLogout'
);
}
Run Code Online (Sandbox Code Playgroud)
虽然,我不知道我应该放在这里, App\Events\UserLoggedIn
我可以在哪里开火这个活动?
我如何使用事件实现此功能?
您需要倾听的事件包括:
这些是Laravel自动触发的事件 - 请参阅Illuminate\Auth\Guard类,这是您使用Auth facade 时获得的 .
为了让您的听众工作,您需要做:
$events->listen(
'auth.login',
'App\Listeners\UserEventListener@onUserLogin'
);
$events->listen(
'auth.logout',
'App\Listeners\UserEventListener@onUserLogout'
);
Run Code Online (Sandbox Code Playgroud)
另一种选择是为两个事件定义单独的处理程序类,例如:
class UserEventLoginHandler {
public function handle($event) {
//do some logic here
}
}
class UserEventLogoutHandler {
public function handle($event) {
//do some logic here
}
}
Run Code Online (Sandbox Code Playgroud)
然后在以下位置定义侦听器:
protected $listen = array(
'auth.login' => 'App\Listeners\UserEventLoginListener',
'auth.logout' => 'App\Listeners\UserEventLogoutListener'
);
Run Code Online (Sandbox Code Playgroud)
您还可以使用Laravel的命令生成处理程序 - 有关详细信息,请参阅https://mattstauffer.co/blog/laravel-5.0-events-and-handlers.
| 归档时间: |
|
| 查看次数: |
5254 次 |
| 最近记录: |