Issue #3497935 by prudloff, smustgrave: Renderer::getCurrentRenderContext() triggers a TypeError when there is no current request

merge-requests/10519/head^2
catch 2025-03-10 19:26:08 +00:00
parent 02513abe69
commit e7bb6157e6
2 changed files with 23 additions and 0 deletions

View File

@ -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;
}

View File

@ -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());
}
}
/**