escolalms/templates

Escola 无头 LMS 模板(例如证书)

0.2.37 2023-04-14 14:44 UTC

README

swagger codecov phpunit downloads downloads downloads

目的

该包的通用目的是将各种模板存储在数据库中,并将它们分配给事件,以便基于这些模板的内容可以自动生成并发送给用户。

用法

每个模板由以下定义:

  • channel:定义如何处理模板的类
  • event:分配给模板的事件

对于每个渠道和事件对,将注册一个单个变量定义,它包含可以在模板中使用的令牌,并根据事件的数据替换这些值。

分析以下三个示例文件,以了解如何使用此包:tests

  • TestChannel.php
  • TestVariables.php
  • TestEventWithGetters.php

并查看 Template 门面,这是理解此包工作方式的最简单方法。

门面

声明了一个 Template 门面,用于注册事件-渠道-变量集,并在测试中使用(因为它可以使用 Template::fake() 用假数据替换)。

要注册事件-渠道-变量集,必须调用 Template::register($eventClass, $channelClass, $variableClass),其中

  • $eventClass 可以是任何类,该类在 EscolaLms 任何包中作为事件分发
  • $channelClass 必须是实现此包中声明的 TemplateChannelContract 接口的类
  • $variableClass 必须是实现此包中声明的 TemplateVariableContract 接口的类

渠道和变量

此包没有定义渠道或变量,所有内容都应该在单独的包中创建。

事件包装器

EscolaLms\Templates\Events\EventWrapper 是一个类,它在尝试为事件生成通知之前将其包装(并将从事件中获取的数据馈送到模板)。此类包含用于从事件中提取必要数据的方法,如果这些数据无法直接获取(例如,要发送通知的用户以及任何其他由已注册的模板所需的数据)。

端点

所有端点都定义在 swagger

测试

运行 ./vendor/bin/phpunit --filter 'EscolaLms\\Templates\\Tests' 以运行测试。请参阅 tests 文件夹,因为它是文档附录的良好起点。

测试详细信息:codecov phpunit

监听器

  • EscolaLms\Templates\Listeners\TemplateEventListener 此监听器监听所有 EscolaLms 命名空间的事件,检查事件是否为任何模板注册,并将包装在 EventWrapper 中的事件传递到处理(因此如果事件已注册且具有相应的模板,则将使用该模板发送通知)

权限

权限定义在 枚举 中,并在 种子文件 中初始化。