将 FlashMessage 发送到不同的 BackendUser

Sending FlashMessage to different BackendUser

我知道如何在后端创建即显消息,并想利用此功能为我创建内部 sys_notes 的补充。我可以使用类似这样的方式为当前用户创建即显消息:

$flashMessage = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessage::class, 'This is some info flash message', '', \TYPO3\CMS\Core\Messaging\FlashMessage::INFO, true);
/** @var $flashMessageService \TYPO3\CMS\Core\Messaging\FlashMessageService */
$flashMessageService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessageService::class);
/** @var $defaultFlashMessageQueue \TYPO3\CMS\Core\Messaging\FlashMessageQueue */
$defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
$defaultFlashMessageQueue->enqueue($flashMessage);

现在的问题是:我可以为当前 BackendUser 队列以外的 FlashMessage 队列创建 Flash 消息吗?

据我所知:不,你不能。 FlashMessage 存储在您的用户会话中,这意味着为了将 FlashMessage 存储在另一个用户的会话中,必须对该会话进行操作。没有任何 API 到 "set XYZ in user BAZ's session" - 但也许您可以手动更改会话记录以将 FlashMessage 排队(只需落后于正常的调度方式)。

不过我不确定我会那样做。以这种方式操纵会话可能会有风险。通常我会建议改用 sys_notes 但你已经提到你正在尝试扩展这个确切的组件。如果您最终认为这样做风险太大,或许可以考虑实施您自己的队列,将 FlashMessages 假脱机处理在单独的数据库中 table 并将每条消息与用户或用户组相关联。