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-and-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 klassischerweise 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 so lange 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.