横向 / 银色沙滩通知器
基于数据对象活动发送通知的可配置通知系统
Requires
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3.0
README
模块,允许通过管理员创建自定义通知,以管理对象更改。
安装
通过 composer 安装此模块
composer require i-lateral/silverstripe-notifier
安装后运行 dev/build
以添加额外的数据库表
配置和设置
安装后,您需要使用 Notifier
注册要监视通知的数据对象。这可以通过相对简单的配置完成
---
Name: notificationsconfig
---
# allow configuring of notifications to users and a custom page type
ilateral\SilverStripe\Notifier\Notifier:
registered_objects:
- SilverStripe\Security\Member
- App\Model\MyCustomPage
添加此配置后(并刷新缓存),请转到 SiteConfig(管理员中的“设置”)。
现在将有一个“通知”选项卡,允许您添加新的通知
添加通知
添加新通知时,您可以选择要监视的对象(从上面的已注册对象列表中选择)。然后您还可以选择
StateCreated
:在对象创建时是否发送通知
StateUpdated
:如果对象被更新,是否发送通知
StateDeleted
:如果对象被删除,是否发送通知
添加规则(可选)
您还可以为每个通知添加更细致的规则。这些规则允许您指定
FieldName
:将检查的对象上数据字段的名称
Value
:如果设置,当对象具有设置为该值的字段时,发送通知
WasChanged
:如果您留空 Value
,则可以检查 WasChanged
,然后任何对该字段的更改都会发送通知
禁止通知规则(可选)
您可以通过 disallow_rules
配置变量禁止特定通知的通知规则。这需要一个不允许此通知类型的规则类名列表。这可以在 YML 中设置如下
---
Name: notificationsconfig
---
# Disallow basic notification rule
ilateral\SilverStripe\Notifier\Model\Notification:
disallow_rules:
- ilateral\SilverStripe\Notifier\Model\Notification\NotificationRule
添加通知类型
一旦指定了要监视的对象和将触发通知的内容,您就需要指定这些通知如何发送。
默认情况下,此模块包含一个 EmailNotification
,它将使用提供的主题和内容将电子邮件发送到指定的收件人。
您可以在同一个 Notification
中添加多个版本的 NotificationType
(例如,如果您想在更改事件中发送电子邮件给多个人)。
禁止通知类型(可选)
您可以通过 disallow_types
配置变量在特定通知上禁止通知类型。这需要一个不允许此通知类型的规则类名列表。这可以在 YML 中设置如下
---
Name: notificationsconfig
---
# Disallow email notification type
ilateral\SilverStripe\Notifier\Model\Notification:
disallow_types:
- ilateral\SilverStripe\Notifier\Types\EmailNotification
内容渲染
通知内容(以及电子邮件主题)支持使用 SilverStripe 变量。当发送通知时,关于变量的上下文将是当前正在监视的对象。
示例 如果在创建新的 Member
时发送电子邮件,您可以在内容区域添加 {$FirstName}
、{$Surname}
、{$Email}
等,并将使用新创建的 Member
渲染这些内容。
新通知类型
该系统设计得可以相对容易地添加新的通知类型(例如 SMS 通知)。您只需扩展 NotificationType
并添加自己的 send
方法来处理发送通知。
动态发送者和接收者
您可以使用监控对象的字段来指定发送者和接收者,而不是使用预定义的发送者和接收者。
不过,在这样做之前,您需要通知 Notifier 您想要使用自定义字段。例如,如果您有以下对象
class MyMonitoredObject extends DataObject { private static $db = [ 'Sender' => 'Email', 'Recipient' => 'Email' ]; private static $extensions = [ 'ilateral\SilverStripe\Notifier' ]; }
您可以添加自定义配置
ilateral\SilverStripe\Notifier\Types\NotificationType: alt_from_fields: MyMonitoredObject: - Sender alt_recipient_fields: MyMonitoredObject: - Recipient
现在,当您登录到您的管理员区域并访问:设置 > 通知
设置新的通知时,您将看到不同的下拉菜单,允许您选择您想要使用的字段。