diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 7c54caf331f..1383c4261b4 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -607,6 +607,11 @@ class Renderer implements RendererInterface { */ protected function getCurrentRenderContext() { $request = $this->requestStack->getCurrentRequest(); + + if (is_null($request)) { + return NULL; + } + return static::$contextCollection[$request] ?? NULL; } diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTest.php b/core/tests/Drupal/Tests/Core/Render/RendererTest.php index 953a0090698..f6eb9b74598 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Drupal\Tests\Core\Render; +use Drupal\Core\Render\RenderContext; use Drupal\Component\Render\MarkupInterface; use Drupal\Core\Access\AccessResult; use Drupal\Core\Access\AccessResultInterface; @@ -1074,6 +1075,23 @@ class RendererTest extends RendererTestBase { ]; } + /** + * @covers ::hasRenderContext + */ + public function testHasRenderContext(): void { + // Tests with no render context. + $this->assertFalse($this->renderer->hasRenderContext()); + + // Tests in a render context. + $this->renderer->executeInRenderContext(new RenderContext(), function () { + $this->assertTrue($this->renderer->hasRenderContext()); + }); + + // Test that the method works with no current request. + $this->requestStack->pop(); + $this->assertFalse($this->renderer->hasRenderContext()); + } + } /**