You are here

public function RadioButtons::exposedFormAlter in Better Exposed Filters 8.5

Same name in this branch
  1. 8.5 src/Plugin/better_exposed_filters/filter/RadioButtons.php \Drupal\better_exposed_filters\Plugin\better_exposed_filters\filter\RadioButtons::exposedFormAlter()
  2. 8.5 src/Plugin/better_exposed_filters/sort/RadioButtons.php \Drupal\better_exposed_filters\Plugin\better_exposed_filters\sort\RadioButtons::exposedFormAlter()
  3. 8.5 src/Plugin/better_exposed_filters/pager/RadioButtons.php \Drupal\better_exposed_filters\Plugin\better_exposed_filters\pager\RadioButtons::exposedFormAlter()
Same name and namespace in other branches
  1. 8.4 src/Plugin/better_exposed_filters/filter/RadioButtons.php \Drupal\better_exposed_filters\Plugin\better_exposed_filters\filter\RadioButtons::exposedFormAlter()

Manipulate views exposed from element.

Parameters

array $form: The views configuration form.

\Drupal\Core\Form\FormStateInterface $form_state: Form state.

Overrides FilterWidgetBase::exposedFormAlter

File

src/Plugin/better_exposed_filters/filter/RadioButtons.php, line 70

Class

RadioButtons
Default widget implementation.

Namespace

Drupal\better_exposed_filters\Plugin\better_exposed_filters\filter

Code

public function exposedFormAlter(array &$form, FormStateInterface $form_state) {

  /** @var \Drupal\views\Plugin\views\filter\FilterPluginBase $filter */
  $filter = $this->handler;

  // Form element is designated by the element ID which is user-
  // configurable.
  $field_id = $filter->options['is_grouped'] ? $filter->options['group_info']['identifier'] : $filter->options['expose']['identifier'];
  parent::exposedFormAlter($form, $form_state);
  if (!empty($form[$field_id])) {

    // Clean up filters that pass objects as options instead of strings.
    if (!empty($form[$field_id]['#options'])) {
      $form[$field_id]['#options'] = BetterExposedFiltersHelper::flattenOptions($form[$field_id]['#options']);
    }

    // Support rendering hierarchical checkboxes/radio buttons (e.g. taxonomy
    // terms).
    if (!empty($filter->options['hierarchy'])) {
      $form[$field_id]['#bef_nested'] = TRUE;
    }

    // Display inline.
    $form[$field_id]['#bef_display_inline'] = $this->configuration['display_inline'];

    // Render as checkboxes if filter allows multiple selections.
    if (!empty($form[$field_id]['#multiple'])) {
      $form[$field_id]['#theme'] = 'bef_checkboxes';
      $form[$field_id]['#type'] = 'checkboxes';

      // Show all/none option.
      $form[$field_id]['#bef_select_all_none'] = $this->configuration['select_all_none'];
      $form[$field_id]['#bef_select_all_none_nested'] = $this->configuration['select_all_none_nested'];

      // Attach the JS (@see /js/bef_select_all_none.js)
      $form['#attached']['library'][] = 'better_exposed_filters/select_all_none';
    }
    else {
      $form[$field_id]['#theme'] = 'bef_radios';
      $form[$field_id]['#type'] = 'radios';
    }
  }
}