public function FilterWidgetBase::exposedFormAlter in Better Exposed Filters 8.5
Same name and namespace in other branches
- 8.4 src/Plugin/better_exposed_filters/filter/FilterWidgetBase.php \Drupal\better_exposed_filters\Plugin\better_exposed_filters\filter\FilterWidgetBase::exposedFormAlter()
Manipulate views exposed from element.
Parameters
array $form: The views configuration form.
\Drupal\Core\Form\FormStateInterface $form_state: Form state.
Overrides BetterExposedFiltersWidgetInterface::exposedFormAlter
6 calls to FilterWidgetBase::exposedFormAlter()
- DatePickers::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ DatePickers.php - Manipulate views exposed from element.
- Hidden::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ Hidden.php - Manipulate views exposed from element.
- Links::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ Links.php - Manipulate views exposed from element.
- RadioButtons::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ RadioButtons.php - Manipulate views exposed from element.
- Single::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ Single.php - Manipulate views exposed from element.
6 methods override FilterWidgetBase::exposedFormAlter()
- DatePickers::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ DatePickers.php - Manipulate views exposed from element.
- Hidden::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ Hidden.php - Manipulate views exposed from element.
- Links::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ Links.php - Manipulate views exposed from element.
- RadioButtons::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ RadioButtons.php - Manipulate views exposed from element.
- Single::exposedFormAlter in src/
Plugin/ better_exposed_filters/ filter/ Single.php - Manipulate views exposed from element.
File
- src/
Plugin/ better_exposed_filters/ filter/ FilterWidgetBase.php, line 167
Class
- FilterWidgetBase
- Base class for Better exposed filters widget plugins.
Namespace
Drupal\better_exposed_filters\Plugin\better_exposed_filters\filterCode
public function exposedFormAlter(array &$form, FormStateInterface $form_state) {
/** @var \Drupal\views\Plugin\views\filter\FilterPluginBase $filter */
$filter = $this->handler;
$filter_id = $filter->options['expose']['identifier'];
$field_id = $this
->getExposedFilterFieldId();
$is_collapsible = $this->configuration['advanced']['collapsible'];
$is_secondary = !empty($form['secondary']) && $this->configuration['advanced']['is_secondary'];
// Sort options alphabetically.
if ($this->configuration['advanced']['sort_options']) {
$form[$field_id]['#nested'] = $filter->options['hierarchy'] ?? FALSE;
$form[$field_id]['#nested_delimiter'] = '-';
$form[$field_id]['#pre_process'][] = [
$this,
'processSortedOptions',
];
}
// Check for placeholder text.
if (!empty($this->configuration['advanced']['placeholder_text'])) {
// @todo Add token replacement for placeholder text.
$form[$field_id]['#placeholder'] = $this
->t($this->configuration['advanced']['placeholder_text']);
}
// Handle filter value rewrites.
if ($this->configuration['advanced']['rewrite']['filter_rewrite_values']) {
// Reorder options based on rewrite values, if sort options is disabled.
$form[$field_id]['#options'] = BetterExposedFiltersHelper::rewriteOptions($form[$field_id]['#options'], $this->configuration['advanced']['rewrite']['filter_rewrite_values'], !$this->configuration['advanced']['sort_options']);
// @todo what is $selected?
// if (isset($selected) &&
// !isset($form[$field_id]['#options'][$selected])) {
// Avoid "Illegal choice" errors.
// $form[$field_id]['#default_value'] = NULL;
// }
}
// Identify all exposed filter elements.
$identifier = $filter_id;
$exposed_label = $filter->options['expose']['label'];
$exposed_description = $filter->options['expose']['description'];
if ($filter
->isAGroup()) {
$identifier = $filter->options['group_info']['identifier'];
$exposed_label = $filter->options['group_info']['label'];
$exposed_description = $filter->options['group_info']['description'];
}
// If selected, collect our collapsible filter form element and put it in
// a details element.
if ($is_collapsible) {
$form[$field_id . '_collapsible'] = [
'#type' => 'details',
'#title' => $exposed_label,
'#description' => $exposed_description,
'#attributes' => [
'class' => [
'form-item',
],
],
];
if ($is_secondary) {
// Move secondary elements.
$this
->addElementToGroup($form, $form_state, $field_id . '_collapsible', 'secondary');
}
}
$filter_elements = [
$identifier,
$filter->options['expose']['operator_id'],
];
// Iterate over all exposed filter elements.
foreach ($filter_elements as $element) {
// Sanity check to make sure the element exists.
if (empty($form[$element])) {
continue;
}
// Move collapsible elements.
if ($is_collapsible) {
$this
->addElementToGroup($form, $form_state, $element, $field_id . '_collapsible');
}
else {
$form[$element]['#title'] = $exposed_label;
$form[$element]['#description'] = $exposed_description;
// Move secondary elements.
if ($is_secondary) {
$this
->addElementToGroup($form, $form_state, $element, 'secondary');
}
}
// Finally, add some metadata to the form element.
$this
->addContext($form[$element]);
}
}