function Details::preRenderDetails
Same name in other branches
- 9 core/lib/Drupal/Core/Render/Element/Details.php \Drupal\Core\Render\Element\Details::preRenderDetails()
- 8.9.x core/lib/Drupal/Core/Render/Element/Details.php \Drupal\Core\Render\Element\Details::preRenderDetails()
- 11.x core/lib/Drupal/Core/Render/Element/Details.php \Drupal\Core\Render\Element\Details::preRenderDetails()
Adds form element theming to details.
Parameters
$element: An associative array containing the properties and children of the details.
Return value
array The modified element.
File
-
core/
lib/ Drupal/ Core/ Render/ Element/ Details.php, line 72
Class
- Details
- Provides a render element for a details element, similar to a fieldset.
Namespace
Drupal\Core\Render\ElementCode
public static function preRenderDetails($element) {
Element::setAttributes($element, [
'id',
]);
// The .js-form-wrapper class is required for #states to treat details like
// containers.
static::setAttributes($element, [
'js-form-wrapper',
'form-wrapper',
]);
// Collapsible details.
$element['#attached']['library'][] = 'core/drupal.collapse';
// Open the detail if specified or if a child has an error.
if (!empty($element['#open']) || !empty($element['#children_errors'])) {
$element['#attributes']['open'] = 'open';
}
// Do not render optional details elements if there are no children.
if (isset($element['#parents'])) {
$group = implode('][', $element['#parents']);
if (!empty($element['#optional']) && !Element::getVisibleChildren($element['#groups'][$group])) {
$element['#printed'] = TRUE;
}
}
return $element;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.