function RendererInterface::executeInRenderContext

Same name in other branches
  1. 9 core/lib/Drupal/Core/Render/RendererInterface.php \Drupal\Core\Render\RendererInterface::executeInRenderContext()
  2. 8.9.x core/lib/Drupal/Core/Render/RendererInterface.php \Drupal\Core\Render\RendererInterface::executeInRenderContext()
  3. 10 core/lib/Drupal/Core/Render/RendererInterface.php \Drupal\Core\Render\RendererInterface::executeInRenderContext()

Executes a callable within a render context.

Only for very advanced use cases. Prefer using ::renderRoot() and ::renderInIsolation() instead.

All rendering must happen within a render context. Within a render context, all bubbleable metadata is bubbled and hence tracked. Outside of a render context, it would be lost. This could lead to missing assets, incorrect cache variations (and thus security issues), insufficient cache invalidations, and so on.

Any and all rendering must therefore happen within a render context, and it is this method that provides that.

Parameters

\Drupal\Core\Render\RenderContext $context: The render context to execute the callable within.

callable $callable: The callable to execute.

Return value

mixed The callable's return value.

Throws

\LogicException In case bubbling has failed, can only happen in case of broken code.

See also

\Drupal\Core\Render\RenderContext

\Drupal\Core\Render\BubbleableMetadata

1 method overrides RendererInterface::executeInRenderContext()
Renderer::executeInRenderContext in core/lib/Drupal/Core/Render/Renderer.php
Executes a callable within a render context.

File

core/lib/Drupal/Core/Render/RendererInterface.php, line 386

Class

RendererInterface
Defines an interface for turning a render array into a string.

Namespace

Drupal\Core\Render

Code

public function executeInRenderContext(RenderContext $context, callable $callable);

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.