Fatal error when building user form in API request

Created on 6 February 2025, 3 months ago

Problem/Motivation

We are building forms inside an API request.

An API request does not necessarily have an underlying "render context", so openid_connect_form_user_login_form_alter() throws a fatal error:

LogicException: Render context is empty, because render() was called outside of a renderRoot() or renderInIsolation() call. Use renderInIsolation()/renderRoot() or #lazy_builder/#pre_render instead. in Drupal\Core\Render\Renderer->doRender() (line 303 of core/lib/Drupal/Core/Render/Renderer.php). 

Drupal\Core\Render\Renderer->render() (Line: 192)
openid_connect_form_user_login_form_alter() (Line: 552)
Drupal\Core\Extension\ModuleHandler->alter() (Line: 834)

Steps to reproduce

Install lupus_decoupled_user_form module

Visit /ce-api/user/login

Proposed resolution

I'm not seeing how rendering the extra OpenIDConnectLoginForm would need the existing render context in which the 'base' form is rendered. So: just replace render() with renderRoot().

Remaining tasks

User interface changes

none

API changes

none

Data model changes

none

πŸ› Bug report
Status

Active

Version

3.0

Component

Code

Created by

πŸ‡³πŸ‡±Netherlands roderik Amsterdam,NL / Budapest,HU

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

Production build 0.71.5 2024