TYPO3:在自定义扩展中使用 Powermail Signal

问题描述 投票:0回答:1

TYPO3 10,Powermail 8.4

通过 Powermail 成功进行双重选择加入验证后,我想将邮件数据发送到外部 API。

\In2code\Powermail\Controller\FormController
中有一个信号
AfterPersist
我可以使用。

在我的扩展中我添加了

ext_localconf.php

/**
 * Signal Powermail::optinConfirmAction 'AfterPersist'
 *
 * @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher
 */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
$signalSlotDispatcher->connect(
    \In2code\Powermail\Controller\FormController::class,
    'AfterPersist',
    \MyVendor\MyForms\Controller\MyFormController::class,
    'sendToApi'
);

我的班级目前看起来像这样:

namespace MyVendor\MyForms\Controller;
    
use In2code\Powermail\Controller\FormController;
    
class MyFormController extends FormController {
    
    /**
     * arguments mail, form, hash
     *
     * @return void
     */
    public function sendToApi() {
        echo 'Test';
    }
}

我的问题:

  • 这种方式仍然可能吗,就像在 TYPO3 10 中,EventDispatcher 是 介绍一下?
  • 如何调试槽位是否被触发?我的强烈印象是我的插槽没有找到。 (为了测试它,我实现了一个 PHP 错误 - 没有发出信号。)
typo3 signals-slots typo3-10.x powermail
1个回答
0
投票

在 Powermail 8.4.x 中,信号槽仍然被实现。 从 Powermail 版本 12 开始,必须使用事件调度。

SignalSlotDispatcher 从 TYPO3 11 起被标记为已弃用,并将在 TYPO3 12 中删除。

如果您不使用 XDebug 进行调试,您可以在 sendToApi 方法中执行一个简单的 die 操作:

die("Is called")

然后你应该会看到一个带有该文本的白屏。

© www.soinside.com 2019 - 2024. All rights reserved.