function FilterPluginBase::groupForm

Same name and namespace in other branches
  1. 9 core/modules/views/src/Plugin/views/filter/FilterPluginBase.php \Drupal\views\Plugin\views\filter\FilterPluginBase::groupForm()
  2. 10 core/modules/views/src/Plugin/views/filter/FilterPluginBase.php \Drupal\views\Plugin\views\filter\FilterPluginBase::groupForm()
  3. 11.x core/modules/views/src/Plugin/views/filter/FilterPluginBase.php \Drupal\views\Plugin\views\filter\FilterPluginBase::groupForm()

Build a form containing a group of operator | values to apply as a single filter.

File

core/modules/views/src/Plugin/views/filter/FilterPluginBase.php, line 849

Class

FilterPluginBase
Base class for Views filters handler plugins.

Namespace

Drupal\views\Plugin\views\filter

Code

public function groupForm(&$form, FormStateInterface $form_state) {
    if (!empty($this->options['group_info']['optional']) && !$this->multipleExposedInput()) {
        $groups = [
            'All' => $this->t('- Any -'),
        ];
    }
    foreach ($this->options['group_info']['group_items'] as $id => $group) {
        if (!empty($group['title'])) {
            $groups[$id] = $id != 'All' ? $this->t($group['title']) : $group['title'];
        }
    }
    if (count($groups)) {
        $value = $this->options['group_info']['identifier'];
        $form[$value] = [
            '#title' => $this->options['group_info']['label'],
            '#type' => $this->options['group_info']['widget'],
            '#default_value' => $this->group_info,
            '#options' => $groups,
        ];
        if (!empty($this->options['group_info']['multiple'])) {
            if (count($groups) < 5) {
                $form[$value]['#type'] = 'checkboxes';
            }
            else {
                $form[$value]['#type'] = 'select';
                $form[$value]['#size'] = 5;
                $form[$value]['#multiple'] = TRUE;
            }
            unset($form[$value]['#default_value']);
            $user_input = $form_state->getUserInput();
            if (empty($user_input)) {
                $user_input[$value] = $this->group_info;
                $form_state->setUserInput($user_input);
            }
        }
        $this->options['expose']['label'] = '';
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.