dmk / mkoptin
MK Optin 扩展
v10.0.0
2021-12-08 14:53 UTC
Requires
- php: ^7.4
- typo3/cms-backend: ^10.4
- typo3/cms-core: ^10.4
- typo3/cms-extbase: ^10.4
- typo3/cms-fluid: ^10.4
Requires (Dev)
- captainhook/captainhook: ^5.10
- friendsofphp/php-cs-fixer: ^3.3
- helmich/typo3-typoscript-lint: ^2.5
- nimut/testing-framework: ^5.0
- php-parallel-lint/php-parallel-lint: ^1.3
- phpcompatibility/php-compatibility: ^9.3.5
- phpmd/phpmd: ^2.11
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.2
- saschaegerer/phpstan-typo3: ^1.0
- sebastian/phpcpd: ^5.0
This package is auto-updated.
Last update: 2024-09-08 13:52:59 UTC
README
此 TYPO3 扩展通过 fluid 邮件提供 opt-in 流程。
简短说明
- 可以触发发送 opt-in 邮件
- 通过电子邮件中的激活链接处理验证。
- 触发 opt-in 验证成功事件。
- 将 opt-in 信息添加到 tca。
安装
通过 composer 安装 TYPO3。
从项目根目录,您需要运行
composer require dmk/mkoptin
启动新的 opt-in 流程
class MyAwesomeManager { private OptinManager $optinManager; public function __construct( OptinManager $optinManager ) { $this->optinManager = $optinManager; } protected function handleOptIn(string $email): void { $optin = $this->optinManager->createOptinForEmail($email); // opt in already done :) if ($optin->isValidated()) { // opt-in already performed, do your finalize stuff here return; } // opt-in outstanding, send opt-in mail // finalize stuff has to be performed by event listener after opt-in validation $this->optinManager->sendValidationMailForOptin($optin); } }
注册 opt-in 验证成功事件监听器
为什么我们需要这个?
在电子邮件验证后执行操作,例如激活记录或发送确认邮件。
services: DMK\MyAwesomeExtension\Event\EventListener\OptinValidationSuccessEventListener: tags: - name: 'event.listener' identifier: 'MyAwesomeOptinValidationSuccessEventListener' event: DMK\Optin\Event\OptinValidationSuccessEvent
class OptinValidationSuccessEventListener { private MyAwesomeManager $manager; public function __construct( MyAwesomeManager $manager ) { $this->manager = $manager; } public function __invoke(OptinValidationSuccessEvent $event): void { $this->manager->handleOptinValidation($event->getOptin()); } } class MyAwesomeManager { public function handleOptinValidation(Optin $optin): void { // opt-in performed, do your finalize stuff here } }
将 opt-in 信息添加到 TCA
为了输出数据记录的 opt-in 信息,必须添加以下 TCA 列
return [ 'columns' => [ 'optin' => [ 'label' => 'LLL:EXT:mkoptin/Resources/Private/Language/locallang_db.xlf:tx_mkoptin_domain_model_optin', 'config' => [ 'type' => 'user', 'renderType' => 'optInStateElement', ], ], ] ];
警告:目前数据记录中的字段必须始终是 email
!
模板
plugin {
tx_mkoptin {
view {
templateRootPath = EXT:myawesomeextension/Resources/Private/Templates/Optin
partialRootPath = EXT:myawesomeextension/Resources/Private/Partials/Optin
layoutRootPath = EXT:myawesomeextension/Resources/Private/Layouts/Optin
}
}
}
@TODOs
- 实现电子邮件字段配置表