如何在Laravel中实现事件监听器?

How to implement event listeners in Laravel?

提问人:laravel sagmetic 提问时间:5/1/2023 更新时间:5/1/2023 访问量:379

问:

我正在开发一个Laravel应用程序,我想实现事件侦听器。具体来说,我希望在发生特定事件时触发某些操作,例如当用户注册或发布帖子时。我已经阅读了关于事件和侦听器的 Laravel 文档,但我仍然不太确定如何在我的应用程序中实现它们。

以下是我到目前为止所做的:

  1. 创建了一个事件类:我为要侦听的特定事件创建了一个事件类,例如 或 。此类扩展了 .UserRegisteredPostPublishedIlluminate\Foundation\Events\Dispatchable

  2. 创建了一个侦听器类:我还创建了一个处理事件的侦听器类,例如 或 .如果我希望侦听器排队,则此类实现。SendWelcomeEmailNotifyAdminsIlluminate\Contracts\Queue\ShouldQueue

  3. 注册了监听器:我已通过将监听器添加到数组中来注册监听器。EventServiceProvider$listen

但是,我仍然不确定如何触发事件并确保执行侦听器。谁能提供一个清晰简洁的例子来说明如何在 Laravel 中实现事件侦听器?先谢谢你!

PHP 事件 Laravel-9

评论

0赞 lagbox 5/1/2023
向我们展示您拥有的执行这些操作的代码......事件是如何调度的?您是否在 ?...您将需要提供一些代码EventServiceProvider

答:

2赞 Bhaumik Pandhi 5/1/2023 #1

您需要在特定事件发生时调度事件。

例如,在您的寄存器代码/控制器上,您需要调度一个事件。UserRegistered

法典

UserRegistered::dispatch($user);

在调度事件时,其侦听器将被执行。

参考