asantibanez / laravel-subscribable-notifications
Laravel 可订阅通知
Requires
- php: ^7.4|^8.0|^8.1|^8.2
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
- laravel/legacy-factories: ^1.1
Requires (Dev)
- orchestra/testbench: ^6.0|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.5
README
此包允许您将应用程序用户订阅到应用程序通知,并分发它们而不必指定接收者。此包的主要目标是允许您为通知类创建“接收者列表”,并轻松地向用户发送通知。
动机
最近我一直在开发后台办公类应用,其中一组用户需要通过电子邮件通知系统中的特定事件或场景。这些用户在应用中硬编码,有时需要根据他们在公司的工作订阅或取消订阅某些电子邮件。由于他们的电子邮件是硬编码的,所以更新每个应用程序发送的邮件的“订阅者”列表很棘手。本着这个想法,我创建了此包,以允许配置用户所需接收的每个邮件。
安装
您可以通过composer安装此包
composer require asantibanez/laravel-subscribable-notifications
之后,使用php artisan vendor:publish
命令导出config
和migrations
。
一旦导出laravel-subscribable-notifications.php
配置文件,请确保定义您的User
模型和subscribable_notifications
(更多内容请见下文)。只有您配置的通知才可用于订阅。
用法
使用Laravel通知系统,您通常通过Notification
外观或通过实现Notifiable
特质时的User
模型notify()
方法来分发通知。
Notification::send([$user1, $user2, $user3], new OrderShipped($order)); // or $notification = new OrderShipped($order); $user1->notify($notification); $user2->notify($notification); $user3->notify($notification);
使用laravel-subscribable-notifications
,您通过“分发”来发送通知。任何订阅了通知的用户都会收到。
OrderShipped::dispatch($order);
准备您的通知
通知必须实现SubscribableNotification
接口,这需要实现以下方法:
- dispatch
- subscribers
- subscribableNotificationType
对于这些,将DispatchesToSubscriber
特质添加到您的通知中,这将涵盖dispatch
和subscribers
。最后,通过提供一个标识您的通知的字符串来实现subscribableNotificationType
。此值将保存到数据库中以供用户订阅。
class SalesOrderApprovedNotification extends Notification implements SubscribableNotification { use DispatchesToSubscribers; public static function subscribableNotificationType(): string { return 'sales-order.approved'; } // notification implementation here }
您还必须在laravel-subscribable-notifications
配置中的subscribable_notifications
数组中添加您的通知。在此处注册您的通知将允许包知道可以通过此接口分发的哪些通知。
订阅/取消订阅用户
底层,使用一个notification_subscriptions
表来跟踪所有用户对您的通知的订阅。
使用NotificationSubscriptionManager
外观,您可以使用subscribe
和unsubscribe
方法分别订阅和取消订阅用户的通知。还有一个unsubscribeFromAll
方法来从用户中删除所有订阅。
注意:您的
User
模型可以实现HasNotificationSubscriptions
特质以获取辅助方法,以便知道每个用户已订阅了哪些订阅。
实用工具
该包注册了一个新的subscribable-notifications:manage
命令,您可以在终端中运行它并交互式地与notification_subscriptions
表。此命令允许您从在laravel-subscribable-notifications
配置文件中定义的通知中列出/添加/删除用户。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
请参阅CONTRIBUTING获取详细信息。
安全
如果您发现任何与安全相关的问题,请发送电子邮件至santibanez.andres@gmail.com,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。