2017-12-01 12 views
1

基本的に、有効なIPv4でない値をユーザーが入力するたびに、フラッシュメッセージをBEに表示します。私はフックでこれをやりたいのですが、フラッシュメッセージのTypo3ドキュメンテーションのコードを使ってもうまくいかない場合は、おそらく私の側で大きな誤解があるようです。フックを使用してバックエンドにフラッシュメッセージを表示しても何とか動作しません

<?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 

} 
} 
} 
?> 

ここドキュメントからのコードを使用して:行を追加して

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

$message->render(); 

は動作しません。ここで、これまでに私のコードです。私は何が欠けていますか?

+0

追加情報:私はTYPO3のドキュメンタリーで推奨のように$メッセージを作成し、「$ message->)(レンダリング」var_dumpedとメッセージがvar_dumped状態で見ることができました。だから、基本的には、BEに表示されるフック内からは動作しないようです。少なくともそれは私の理論です。または、私はここで何かを逃しているかもしれない。 – Mondblut

答えて

0

メッセージキューにFlashMessageを追加しようとしましたか?

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

コントローラーでフラッシュメッセージを使用した場合は、この部分は不要です。

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

関連する問題