protected function BetterExposedFilters::addDefaultElementInfo in Better Exposed Filters 8.5
Same name and namespace in other branches
- 8.4 src/Plugin/views/exposed_form/BetterExposedFilters.php \Drupal\better_exposed_filters\Plugin\views\exposed_form\BetterExposedFilters::addDefaultElementInfo()
Adds default element callbacks.
This is a workaround where adding process and pre-render functions are not results in replacing the default ones instead of merging.
@todo remove once the following issues are resolved.
Parameters
array $element: The render array for a single form element.
See also
https://www.drupal.org/project/drupal/issues/2070131
https://www.drupal.org/project/drupal/issues/2190333
1 call to BetterExposedFilters::addDefaultElementInfo()
- BetterExposedFilters::exposedFormAlter in src/
Plugin/ views/ exposed_form/ BetterExposedFilters.php - Alters the exposed form.
File
- src/
Plugin/ views/ exposed_form/ BetterExposedFilters.php, line 882
Class
- BetterExposedFilters
- Exposed form plugin that provides a basic exposed form.
Namespace
Drupal\better_exposed_filters\Plugin\views\exposed_formCode
protected function addDefaultElementInfo(array &$element) {
/** @var \Drupal\Core\Render\ElementInfoManager $element_info_manager */
$element_info = \Drupal::service('element_info');
if (isset($element['#type']) && empty($element['#defaults_loaded']) && ($info = $element_info
->getInfo($element['#type']))) {
$element['#process'] = $element['#process'] ?? [];
$element['#pre_render'] = $element['#pre_render'] ?? [];
if (!empty($info['#process'])) {
$element['#process'] = array_merge($info['#process'], $element['#process']);
}
if (!empty($info['#pre_render'])) {
$element['#pre_render'] = array_merge($info['#pre_render'], $element['#pre_render']);
}
// Some processing needs to happen prior to the default form element
// callbacks (e.g. sort). We use the custom '#pre_process' array for this.
if (!empty($element['#pre_process'])) {
$element['#process'] = array_merge($element['#pre_process'], $element['#process']);
}
// Workaround to add support for #group FAPI to all elements currently not
// supported.
// @todo remove once core issue is resolved.
// @see https://www.drupal.org/project/drupal/issues/2190333
if (!in_array('processGroup', array_column($element['#process'], 1))) {
$element['#process'][] = [
'\\Drupal\\Core\\Render\\Element\\RenderElement',
'processGroup',
];
$element['#pre_render'][] = [
'\\Drupal\\Core\\Render\\Element\\RenderElement',
'preRenderGroup',
];
}
}
// Apply the same to any nested children.
foreach (Element::children($element) as $key) {
$child =& $element[$key];
$this
->addDefaultElementInfo($child);
}
}