2016-10-22 3 views
1

В 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); 

ли вспышка сообщения отображаются только если тот же интерфейс плагин будет показан после редиректа? Если да, то как я могу показать «чужие» флэш-сообщения?

+0

Я думаю, что нашел решение, опубликую его позже ... – giraff

+0

Вам придется отправить тех, у кого есть параметры, вероятно, или как-то обнаружить их из тех же переменных после перенаправления. –

+0

Мне не нравится отправлять сообщение через параметры GET по причинам XSS ... – giraff

ответ

3

Да, флэш-сообщения находятся в разных очередях в зависимости от плагина frontend. В контроллере после редиректа, добавьте следующие строки:

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); 
     } 
    } 
} 

Это удалит сообщения из плагина перед перенаправлением и добавить его в «правильной» очереди.