2016-10-22 2 views
1

In Typo3 7.x, ich muss eine Flashmeldung nach einer Umleitung auf eine andere Erweiterung zeigen. Irgendwie werden die Nachrichten nicht dort gezeigt:Wie zeige ich Flash-Nachrichten von einer anderen Erweiterung/Plugin?

// in powermail_extended: 

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

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

Sind die Flash-Mitteilungen nur angezeigt, wenn die gleiche Frontend-Plugin nach der Umleitung angezeigt wird? Wenn ja, wie kann ich auch die "fremden" Flash-Nachrichten anzeigen?

+0

Ich denke, ich habe eine Lösung gefunden, wird es nachher veröffentlichen ... – giraff

+0

Sie müssen diejenigen mit Get-Parameter wahrscheinlich senden oder irgendwie von den gleichen Variablen nach der Umleitung erkennen. –

+0

Ich mag es nicht, die Nachricht über GET-Parameter für XSS-Gründe zu senden ... – giraff

Antwort

3

Ja, die Flash-Nachrichten sind abhängig vom Frontend-Plugin in verschiedenen Warteschlangen. Im Controller nach der Umleitung, fügen Sie die folgenden Zeilen:

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

Dadurch wird die Nachrichten aus dem Plugin vor der Umleitung entfernen und sie zu „korrigieren“ Warteschlange hinzufügen.

Verwandte Themen