Flash Messages in TYPO3 nutzen

Um den Benutzer Nachrichten zu schicken, gibt es in TYPO3 die FlashMessages. Ich zeige dir, wie du sie innerhalb und außerhalb des Controllers nutzen kannst.

Copy & Paste Vorlagen

Es gibt 2 Bereiche. Der erste Bereich ist es FlashMessages zu erstellen und der zweite Bereich FlashMessages wieder auszugeben.

FlashMessages erstellen

Innerhalb des Controllers

$this->addFlashMessage('Deine Hinweis an den Benutzer', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::INFO);

Innerhalb des Controllers (Mehrsprachig)

use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
$this->addFlashMessage(LocalizationUtility::translate('languageKey'), '', \TYPO3\CMS\Core\Messaging\AbstractMessage::INFO);

Außerhalb eines Controllers

use TYPO3\CMS\Core\Utility\GeneralUtility;
$message = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessage::class,
   'Dein Hinweistext',
   'Mein Titel', // optional
   \TYPO3\CMS\Core\Messaging\FlashMessage::INFO, // optional, Schweregrad; Standard ist OK.
   true // optional, entscheided ob die Nachricht in die Session gespeichert werden soll oder nur für den aktuellen Request gilt
);

FlashMessages ausgeben

Ausgabe in Fluid

<f:flashMessages />

Ausgabe in Extbase

use TYPO3\CMS\Core\Utility\GeneralUtility;
$out = GeneralUtility::makeInstance(MySpecialRenderer::class)->render($flashMessages);

Erläuterungen

FlashMessages sind Texte die an den Benutzer übermittelt werden. Das sind klassicherweise Rückmeldungen über Speicherungen von Datensätzen, Hinweis auf einen Mailversand oder Fehlermeldungen und andere Warnhinweise. Dabei gibt es folgende Schweregrade (zu Englisch: Severity):

\TYPO3\CMS\Core\Messaging\FlashMessage::NOTICE for notifications
\TYPO3\CMS\Core\Messaging\FlashMessage::INFO for information messages
\TYPO3\CMS\Core\Messaging\FlashMessage::OK for success messages
\TYPO3\CMS\Core\Messaging\FlashMessage::WARNING for warnings
\TYPO3\CMS\Core\Messaging\FlashMessage::ERROR for errors

Wenn FlashMessages nicht in der Session gespeichert werden, dann gehen Sie nach einem Request wieder verloren. Beziehungsweise die FlashMessageQueue wird sofort geleert. 
Speichert man eine FlashMessage in der Session, dann bleibt sie solange in der Queue bis sie einmal ausgegeben wurde. Nach der Ausgabe wird sie sofort aus der Queue entfernt.

Es lassen sich so viele FlashMessages in einer Queue anhängen, wie man will. Es werden dann entsprechende viele an den Benutzer ausgegeben.