escolalms / templates
Escola 无头 LMS 模板(例如证书)
0.2.37
2023-04-14 14:44 UTC
Requires
- php: >=7.4 | >=8.0
- doctrine/dbal: ^2|^3
- escolalms/core: ^1.2
- escolalms/settings: ^0
- fakerphp/faker: ^1
- laravel/framework: >=8.0
Requires (Dev)
- escolalms/cart: ^0
- escolalms/courses: ^0
- orchestra/testbench: ^5|^6
- phpunit/phpunit: ^9.0
- dev-main
- 0.2.37
- 0.2.36
- 0.2.35
- 0.2.34
- 0.2.33
- 0.2.32
- 0.2.31
- 0.2.30
- 0.2.29
- 0.2.28
- 0.2.27
- 0.2.26
- 0.2.25
- 0.2.24
- 0.2.23
- 0.2.22
- 0.2.21
- 0.2.20
- 0.2.19
- 0.2.18
- 0.2.17
- 0.2.16
- 0.2.15
- 0.2.14
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-feature/admin-readme
- dev-feature/readme
- dev-bugfix/pagination-on-templates-list
- dev-feature/94
- dev-feature/filter-template-list-by-channel-or-event
- dev-feature/refactored-assigning-templates-to-models
This package is auto-updated.
Last update: 2024-09-22 07:28:16 UTC
README
目的
该包的通用目的是将各种模板存储在数据库中,并将它们分配给事件,以便基于这些模板的内容可以自动生成并发送给用户。
用法
每个模板由以下定义:
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
是一个类,它在尝试为事件生成通知之前将其包装(并将从事件中获取的数据馈送到模板)。此类包含用于从事件中提取必要数据的方法,如果这些数据无法直接获取(例如,要发送通知的用户以及任何其他由已注册的模板所需的数据)。
端点
测试
运行 ./vendor/bin/phpunit --filter 'EscolaLms\\Templates\\Tests'
以运行测试。请参阅 tests 文件夹,因为它是文档附录的良好起点。
监听器
EscolaLms\Templates\Listeners\TemplateEventListener
此监听器监听所有EscolaLms
命名空间的事件,检查事件是否为任何模板注册,并将包装在EventWrapper
中的事件传递到处理(因此如果事件已注册且具有相应的模板,则将使用该模板发送通知)