注册模块事件

未匹配的标注

注册模块事件

模块可以包含事件和事件监听器。你可以手动创建这些类,或者使用以下辅助方法:

php artisan module:make-event BlogPostWasUpdated Blog
php artisan module:make-listener NotifyAdminOfNewPost Blog

一旦创建了它们,你需要在laravel中注册它们。这可以通过两种方式实现:

  • 手动调用 $this->app['events']->listen(BlogPostWasUpdated::class, NotifyAdminOfNewPost::class); 在你的模块服务提供者中
  • 或者通过为你的模块创建一个包含所有事件的事件服务提供者,类似于 app/ 命名空间下的EventServiceProvider

创建一个EventServiceProvider

一旦你有多个事件,你可能会发现将所有事件及其监听器放在一个专用的服务提供者中会更容易。这就是EventServiceProvider的作用。

Modules/Blog/Providers 文件夹 (以 Blog 为例) 创建一个名为 EventServiceProvider 的新类。

这个类看起来应该像这样:

<?php

namespace Modules\Blog\Providers;

use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [];
}

不要忘记加载这个服务提供者,例如将其添加到模块中的 composer.json 文件。

这就像 app/ 命名空间中的常规 EventServiceProvider。在我们的例子中,listen 属性看起来像这样:

// ...
class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        BlogPostWasUpdated::class => [
            NotifyAdminOfNewPost::class,
        ],
    ];
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Slowlyo
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~