BootstrapRenderer::class, 'FE' => ListRenderer::class, 'CLI' => PlaintextRenderer::class, '_default' => PlaintextRenderer::class, ]; /** * This method resolves a FlashMessageRendererInterface for the given $context. * * In case $context is null, the context will be detected automatic. */ public function resolve(): FlashMessageRendererInterface { $rendererClass = $this->resolveFlashMessageRenderClass(); $renderer = GeneralUtility::makeInstance($rendererClass); if (!$renderer instanceof FlashMessageRendererInterface) { throw new \RuntimeException('Renderer ' . get_class($renderer) . ' does not implement FlashMessageRendererInterface', 1476958086); } return $renderer; } /** * This method resolves the renderer class by given context. */ protected function resolveFlashMessageRenderClass(): string { $context = $this->resolveContext(); $renderClass = $this->renderer['_default']; if (!empty($this->renderer[$context])) { $renderClass = $this->renderer[$context]; } return $renderClass; } /** * This method detect the current context and return one of the * following strings: * - FE * - BE * - CLI */ protected function resolveContext(): string { $context = ''; $request = $GLOBALS['TYPO3_REQUEST'] ?? null; if (Environment::isCli()) { $context = 'CLI'; } elseif ($request instanceof ServerRequest && ApplicationType::fromRequest($request)->isBackend()) { $context = 'BE'; } elseif ($request instanceof ServerRequest && ApplicationType::fromRequest($request)->isFrontend()) { $context = 'FE'; } return $context; } }