function LayoutBuilder::renderLayoutBuilderAfterForm
Render API #pre_render callback for form containing layout builder element.
Because the layout builder element can contain components with forms, it needs to exist outside forms within the DOM, to avoid nested form tags. The layout builder element is rendered to markup here and saved, and later the saved markup will be appended after the form markup.
Parameters
array $form: The rendered form.
Return value
array
See also
::addRenderedLayoutBuilder()
File
-
core/
modules/ layout_builder/ src/ Element/ LayoutBuilder.php, line 129
Class
- LayoutBuilder
- Defines a render element for building the Layout Builder UI.
Namespace
Drupal\layout_builder\ElementCode
public static function renderLayoutBuilderAfterForm(array $form) : array {
if (isset($form['#layout_builder_element_keys'])) {
$layout_builder_element =& NestedArray::getValue($form, $form['#layout_builder_element_keys']);
// Save the rendered layout builder HTML to a non-rendering child key.
// Since this method is a pre_render callback, it is assumed that it is
// called while rendering with an active render context, so that the
// cache metadata and attachments bubble correctly.
$form['#layout_builder_markup'] = \Drupal::service('renderer')->render($layout_builder_element);
// Remove the layout builder child element within form array.
$layout_builder_element = [];
}
return $form;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.