You are here

public function Combine::buildOptionsForm in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/views/src/Plugin/views/filter/Combine.php \Drupal\views\Plugin\views\filter\Combine::buildOptionsForm()
  2. 9 core/modules/views/src/Plugin/views/filter/Combine.php \Drupal\views\Plugin\views\filter\Combine::buildOptionsForm()

Provide the basic form which calls through to subforms.

If overridden, it is best to call through to the parent, or to at least make sure all of the functions in this form are called.

Overrides FilterPluginBase::buildOptionsForm

File

core/modules/views/src/Plugin/views/filter/Combine.php, line 28

Class

Combine
Filter handler which allows to search on multiple fields.

Namespace

Drupal\views\Plugin\views\filter

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
  parent::buildOptionsForm($form, $form_state);
  $this->view
    ->initStyle();

  // Allow to choose all fields as possible
  if ($this->view->style_plugin
    ->usesFields()) {
    $options = [];
    foreach ($this->view->display_handler
      ->getHandlers('field') as $name => $field) {

      // Only allow clickSortable fields. Fields without clickSorting will
      // probably break in the Combine filter.
      if ($field
        ->clickSortable()) {
        $options[$name] = $field
          ->adminLabel(TRUE);
      }
    }
    if ($options) {
      $form['fields'] = [
        '#type' => 'select',
        '#title' => $this
          ->t('Choose fields to combine for filtering'),
        '#description' => $this
          ->t("This filter doesn't work for very special field handlers."),
        '#multiple' => TRUE,
        '#options' => $options,
        '#default_value' => $this->options['fields'],
      ];
    }
    else {
      $form_state
        ->setErrorByName('', $this
        ->t('You have to add some fields to be able to use this filter.'));
    }
  }
}