public static RenderElement::preRenderGroup($element)
Adds members of this group as actual elements for rendering.
Parameters
array $element: An associative array containing the properties and children of the element.
Return value
array The modified element with all group members.
File
- core/lib/Drupal/Core/Render/Element/RenderElement.php, line 160
Class
- RenderElement
- Provides a base class for render element plugins.
Namespace
Drupal\Core\Render\Element
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | public static function preRenderGroup( $element ) { // The element may be rendered outside of a Form API context. if (!isset( $element [ '#parents' ]) || !isset( $element [ '#groups' ])) { return $element ; } // Inject group member elements belonging to this group. $parents = implode( '][' , $element [ '#parents' ]); $children = Element::children( $element [ '#groups' ][ $parents ]); if (! empty ( $children )) { foreach ( $children as $key ) { // Break references and indicate that the element should be rendered as // group member. $child = ( array ) $element [ '#groups' ][ $parents ][ $key ]; $child [ '#group_details' ] = TRUE; // Inject the element as new child element. $element [] = $child ; $sort = TRUE; } // Re-sort the element's children if we injected group member elements. if (isset( $sort )) { $element [ '#sorted' ] = FALSE; } } if (isset( $element [ '#group' ])) { // Contains form element summary functionalities. $element [ '#attached' ][ 'library' ][] = 'core/drupal.form' ; $group = $element [ '#group' ]; // If this element belongs to a group, but the group-holding element does // not exist, we need to render it (at its original location). if (!isset( $element [ '#groups' ][ $group ][ '#group_exists' ])) { // Intentionally empty to clarify the flow; we simply return $element. } // If we injected this element into the group, then we want to render it. elseif (! empty ( $element [ '#group_details' ])) { // Intentionally empty to clarify the flow; we simply return $element. } // Otherwise, this element belongs to a group and the group exists, so we do // not render it. elseif (Element::children( $element [ '#groups' ][ $group ])) { $element [ '#printed' ] = TRUE; } } return $element ; } |
Please login to continue.