When I tried to use the task editor from the template builder, I got the error:

LogicException: Render context is empty, because render() was called outside of a renderRoot() or renderPlain() call. Use renderPlain()/renderRoot() or #lazy_builder/#pre_render instead. in Drupal\Core\Render\Renderer->doRender() (line 241 of /Users/lebster/cimpleo/projects/mediapeaks/musicpeaks/web/core/lib/Drupal/Core/Render/Renderer.php).

To prevent this issue, need to use renderer service instead of drupal_render() to prevent this issue and due to function is deprecated and will be removed before Drupal 9.0.0.

For example, this code:

    //We will now render the legend
    $legend = '';
    $legend_render_array = [
      '#theme' => 'template_task_legend',
    ];
    $legend = drupal_render($legend_render_array);

replace with:

    //We will now render the legend
    $legend = '';
    $legend_render_array = [
      '#theme' => 'template_task_legend',
    ];
    $legend = \Drupal::service('renderer')->renderPlain($legend_render_array);

Comments

lebster created an issue. See original summary.

ugolek’s picture

Here's a patch that replace the deprecated drupal_render() with \Drupal::service('renderer')->renderPlain().

  • _randy committed 4700f62 on 8.x-2.x authored by lebster
    Issue #3025690 by lebster: Replace usages of deprecated method...
_randy’s picture

Status: Active » Needs review

Thanks for the patch. Committed and needs review.

_randy’s picture

Status: Needs review » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.