如何显示来自其他扩展程序/插件的Flash消息?

时间:2016-10-22 16:00:08

标签: typo3 flash-message

Typo3 7.x 中,我需要在重定向到其他扩展程序后显示flashmessage。不知何故,消息没有显示在那里:

// in powermail_extended:

$this->addFlashMessage('Some message', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::NOTICE);

$uri = $this->uriBuilder->uriFor('form', [], 'Form', 'powermail', 'pi1');
$this->redirectToURI($uri);

如果重定向后显示相同的前端插件,是否仅显示Flash消息?如果是这样,我怎么能显示“外国”闪光信息呢?

1 个答案:

答案 0 :(得分:3)

是的,根据前端插件,闪存消息位于不同的队列中。在重定向后的Controller中,添加以下行:

protected function emitBeforeCallActionMethodSignal(array $preparedArguments) {
    parent::emitBeforeCallActionMethodSignal($preparedArguments);
    $this->addMessagesToDefaultQueue('extbase.flashmessages.tx_powermailextended_pi1' /* depending on your frontend plugin name */);
}

protected function addMessagesToDefaultQueue($queueId) {
    $queue = $this->controllerContext->getFlashMessageQueue($queueId); 
    $msg = $queue->getAllMessagesAndFlush();
    if ($msg) {
        $defaultQueue = $this->controllerContext->getFlashMessageQueue();
        foreach ($msg as $m) {
            $defaultQueue->enqueue($m);
        }
    }
}

这将在重定向之前删除插件中的消息,并将其添加到“正确”队列。