.../lib/Drupal/Core/Entity/Controller/EntityViewController.php | 2 +- core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php | 10 +++++----- core/lib/Drupal/Core/Render/Renderer.php | 10 +++++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php b/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php index 156e749..9a86ad0 100644 --- a/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php +++ b/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php @@ -91,7 +91,7 @@ public function view(EntityInterface $_entity, $view_mode = 'full', $langcode = $build = $this->entityManager->getTranslationFromContext($_entity) ->get($label_field) ->view($view_mode); - $page['#title'] = $this->renderer->render($build); + $page['#title'] = $this->renderer->renderPlain($build); } } diff --git a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php index 17568d1..67804b2 100644 --- a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php +++ b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php @@ -142,14 +142,14 @@ public function renderResponse(array $main_content, Request $request, RouteMatch // and hence may not execute any #post_render_cache_callbacks (because they // might add yet more assets to be attached), and therefore it must be // rendered with drupal_render(), not drupal_render_root(). - $this->renderer->render($html['page'], TRUE); + $this->renderer->renderRoot($html['page']); if (isset($html['page_top'])) { - $this->renderer->render($html['page_top'], TRUE); + $this->renderer->renderRoot($html['page_top']); } if (isset($html['page_bottom'])) { - $this->renderer->render($html['page_bottom'], TRUE); + $this->renderer->renderRoot($html['page_bottom']); } - $content = $this->renderer->render($html); + $content = $this->renderer->renderPlain($html, FALSE); // Expose the cache contexts and cache tags associated with this page in a // X-Drupal-Cache-Contexts and X-Drupal-Cache-Tags header respectively. Also @@ -216,7 +216,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte // ::renderResponse(). // @todo Remove this once https://www.drupal.org/node/2359901 lands. if (!empty($main_content)) { - $this->renderer->render($main_content, FALSE); + $this->renderer->renderPlain($main_content, FALSE); $main_content = $this->renderer->getCacheableRenderArray($main_content) + [ '#title' => isset($main_content['#title']) ? $main_content['#title'] : NULL ]; diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 1679937..447c72d 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -123,11 +123,15 @@ public function renderRoot(&$elements) { /** * {@inheritdoc} + * + * @todo Rename to ::renderInIsolation() */ - public function renderPlain(&$elements) { + public function renderPlain(&$elements, $is_root_call = TRUE) { $current_stack = static::$stack; - $this->resetStack(); - $output = $this->renderRoot($elements); + + static::$stack = new \SplStack(); + $output = $this->render($elements, $is_root_call); + static::$stack = $current_stack; return $output; }