2017-12-01 1 views
1

Grundsätzlich: Ich möchte eine Flash-Nachricht im BE anzeigen, wenn der Benutzer einen Wert eingibt, der kein gültiges IPv4 ist. Ich möchte das in einem Hook machen, aber nur den Code aus der Typo3-Dokumentation für Flash-Nachrichten zu verwenden funktioniert nicht, da scheint es ein großes Missverständnis auf meiner Seite zu geben. Hier ist mein Code so weit:Das Anzeigen einer Flash-Nachricht im Backend mit einem Hook funktioniert irgendwie nicht

<?php 

namespace Cjk\Icingaconfgen\Hook; 

class EvalHook { 
function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray, &$pObj) { 

if (!filter_var($fieldArray[IPv4], FILTER_VALIDATE_IP)){ 

//here i want to put the flash message code 

} 
} 
} 
?> 

Mit dem Code aus der Dokumentation hier:

$message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessage::class, 
    'My message text', 
    'Message Header', // [optional] the header 
    \TYPO3\CMS\Core\Messaging\FlashMessage::WARNING, // [optional] the severity defaults to \TYPO3\CMS\Core\Messaging\FlashMessage::OK 
    true // [optional] whether the message should be stored in the session or only in the \TYPO3\CMS\Core\Messaging\FlashMessageQueue object (default is false) 
); 

mit dem Zusatz der Linie:

$message->render(); 

funktioniert nicht. Was vermisse ich?

+0

Zusatzinfo: Ich habe den $ message erstellt wie in dem Typo3 Dokumentarfilm empfohlen und dann var_dumped "$ message-> render()" und die Nachricht im var_dumped Zustand zu sehen. Es scheint also im Grunde nicht von innerhalb des Hooks zu funktionieren, der im BE angezeigt wird. Zumindest ist das meine Theorie. Oder vielleicht verpasse ich hier etwas. – Mondblut

Antwort

0

Haben Sie versucht, die FlashMessage der Nachrichtenwarteschlange hinzuzufügen?

use TYPO3\CMS\Core\Messaging\FlashMessageService; 

// ... omitted some use statements 


$objectManager = GeneralUtility::makeInstance(ObjectManager::class); 

//... 

$flashMessageService = $this->objectManager->get(lashMessageService::class); 
$messageQueue = $flashMessageService->getMessageQueueByIdentifier(); 
$messageQueue->addMessage($message); 

Sie würden diesen Teil nicht benötigen, wenn Sie die Flash-Meldungen im Controller verwendet haben.

https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/FlashMessages/Index.html

Verwandte Themen