public function Renderer::renderRoot

public Renderer::renderRoot(&$elements)

Renders final HTML given a structured array tree.

Calls ::render() in such a way that placeholders are replaced.

Should therefore only be used in occasions where the final rendering is happening, just before sending a Response:

  • system internals that are responsible for rendering the final HTML
  • render arrays for non-HTML responses, such as feeds

(Cannot be executed within another render context.)

Parameters

array $elements: The structured array describing the data to be rendered.

Return value

\Drupal\Component\Render\MarkupInterface The rendered HTML.

Throws

\LogicException When called from inside another renderRoot() call.

Overrides RendererInterface::renderRoot

See also

\Drupal\Core\Render\RendererInterface::render()

File

core/lib/Drupal/Core/Render/Renderer.php, line 129

Class

Renderer
Turns a render array into a HTML string.

Namespace

Drupal\Core\Render

Code

public function renderRoot(&$elements) {
  // Disallow calling ::renderRoot() from within another ::renderRoot() call.
  if ($this->isRenderingRoot) {
    $this->isRenderingRoot = FALSE;
    throw new \LogicException('A stray renderRoot() invocation is causing bubbling of attached assets to break.');
  }

  // Render in its own render context.
  $this->isRenderingRoot = TRUE;
  $output = $this->executeInRenderContext(new RenderContext(), function() use (&$elements) {
    return $this->render($elements, TRUE);
  });
  $this->isRenderingRoot = FALSE;

  return $output;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Render!Renderer.php/function/Renderer::renderRoot/8.1.x