注册模块事件

未匹配的标注

注册模块事件

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

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
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
发起讨论 查看所有版本


暂无话题~