Same name and namespace in other branches
  1. 8.9.x core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php \Drupal\views\Plugin\views\wizard\WizardPluginBase::buildFilters()
  2. 9 core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php \Drupal\views\Plugin\views\wizard\WizardPluginBase::buildFilters()

Builds the form structure for selecting the view's filters.

By default, this adds "of type" and "tagged with" filters (when they are available).

1 call to WizardPluginBase::buildFilters()
WizardPluginBase::buildForm in core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
Form callback to build other elements in the "show" form.

File

core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php, line 621

Class

WizardPluginBase
Base class for Views wizard plugins.

Namespace

Drupal\views\Plugin\views\wizard

Code

protected function buildFilters(&$form, FormStateInterface $form_state) {
  \Drupal::moduleHandler()
    ->loadInclude('views_ui', 'inc', 'admin');
  $bundles = $this->bundleInfoService
    ->getBundleInfo($this->entityTypeId);

  // If the current base table support bundles and has more than one (like user).
  if (!empty($bundles) && $this->entityType && $this->entityType
    ->hasKey('bundle')) {

    // Get all bundles and their human readable names.
    $options = [
      'all' => $this
        ->t('All'),
    ];
    foreach ($bundles as $type => $bundle) {
      $options[$type] = $bundle['label'];
    }
    $form['displays']['show']['type'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('of type'),
      '#options' => $options,
    ];
    $selected_bundle = static::getSelected($form_state, [
      'show',
      'type',
    ], 'all', $form['displays']['show']['type']);
    $form['displays']['show']['type']['#default_value'] = $selected_bundle;

    // Changing this dropdown updates the entire content of $form['displays']
    // via AJAX, since each bundle might have entirely different fields
    // attached to it, etc.
    views_ui_add_ajax_trigger($form['displays']['show'], 'type', [
      'displays',
    ]);
  }
}