You are here

private function VeflTrait::getRegionElements in Views exposed form layout 8.2

Same name and namespace in other branches
  1. 8.3 src/Plugin/views/exposed_form/VeflTrait.php \Drupal\vefl\Plugin\views\exposed_form\VeflTrait::getRegionElements()

Set filters for regions.

Parameters

string $layout_id: The layout id.

array $layouts: The array of layouts.

Return value

array Form elements.

1 call to VeflTrait::getRegionElements()
VeflTrait::buildOptionsForm in src/Plugin/views/exposed_form/VeflTrait.php
1 method overrides VeflTrait::getRegionElements()
VeflBef::getRegionElements in modules/vefl_bef/src/Plugin/views/exposed_form/VeflBef.php
Set filters for regions.

File

src/Plugin/views/exposed_form/VeflTrait.php, line 106

Class

VeflTrait
Trait for vefl.

Namespace

Drupal\vefl\Plugin\views\exposed_form

Code

private function getRegionElements($layout_id, array $layouts = []) {
  $element = [
    '#prefix' => '<div id="edit-block-region-wrapper">',
    '#suffix' => '</div>',
  ];

  // Outputs regions selectbox for each filter.
  $types = [
    'filters' => $this->view->display_handler
      ->getHandlers('filter'),
    'actions' => $this->vefl
      ->getFormActions(),
  ];
  $regions = [];
  foreach ($layouts[$layout_id]
    ->getRegions() as $region_id => $region) {
    $regions[$region_id] = $region['label'];
  }
  foreach ($types as $type => $fields) {
    foreach ($fields as $id => $filter) {
      if ($type == 'filters') {
        if (!$filter->options['exposed']) {
          continue;
        }
        elseif ($filter->options['is_grouped']) {
          $id = $filter->options['group_info']['identifier'];
          $label = $filter->options['group_info']['label'];
        }
        else {
          $id = $filter->options['expose']['identifier'];
          $label = $filter->options['expose']['label'];
        }
      }
      else {
        $label = $filter;
      }

      // Check if the operator is exposed for this filter.
      if (isset($filter->options['expose']['use_operator']) && $filter->options['expose']['use_operator']) {
        $operator_id = $filter->options['expose']['operator_id'];
        $element[$operator_id] = $this
          ->createSelectElementForVeflForm($operator_id, $this
          ->t('Expose operator') . ' - ' . $label, $regions);
      }
      $element[$id] = $this
        ->createSelectElementForVeflForm($id, $label, $regions);
    }
  }
  return $element;
}