当用户注册时自动向用户发送邮件\发送短信\发送通知等
- 一个事件可以包含多个监听器,用户注册的时候是一个事件,那么发送邮件\发送短信\发送通知应该分别有对应的监听器.
-首先打开EventServiceProvider
文件并编辑以下代码:
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
'App\Events\Register'=>[
'App\Listeners\SendMailTo',
'App\Listeners\CreateLog',
]
];
绿色的部分便是我新注册的事件类,包含了两个监听器SendMailTo
和CreateLog
接下来运行命令> php artisan event:generate
它将自动为我们创建事件和监听器所需要的文件
App\Events\Register
(事件文件)
App\Listeners\SendMailTo
(监听文件)
App\Listeners\CreateLog
(监听文件)
接下来编辑Register.php
改造一下,让它在被实例化的时候传入我们需要的参数这里是$text
public $text;
public function __construct($text)
{
$this->text=$text;
}
接下来编辑文件CreateLog.php
public function handle(Register $event)
{
Log::error($event->text);
}
接下来编辑文件SendMailTo.php
public function handle(Register $event)
{
Log::alert($event->text);
}
为了区分两个监听不同的工作,CreateLog
向日志写入了一条错误消息.而SendMailTo
写入了一个警告消息;
接下来就是使用事件的时候了,在你的控制器中写入如下代码启用事件
public function event()
{
$text='testName';
event(new Register($text));
}
定义好路由并且访问一下,然后打开日志查看监听器执行的结果吧~
[2019-07-23 10:59:40] local.ALERT: testName
[2019-07-23 10:59:40] local.ERROR: testName
一条警告消息和一条错误消息已经创建完成了.
网友评论