function ViewExecutable::_build

Same name in other branches
  1. 9 core/modules/views/src/ViewExecutable.php \Drupal\views\ViewExecutable::_build()
  2. 8.9.x core/modules/views/src/ViewExecutable.php \Drupal\views\ViewExecutable::_build()
  3. 11.x core/modules/views/src/ViewExecutable.php \Drupal\views\ViewExecutable::_build()

Builds an individual set of handlers.

This is an internal method.

@todo Some filter needs this function, even it is internal.

Parameters

string $key: The type of handlers (filter etc.) which should be iterated over to build the relationship and query information.

1 call to ViewExecutable::_build()
ViewExecutable::build in core/modules/views/src/ViewExecutable.php
Builds the query for the view.

File

core/modules/views/src/ViewExecutable.php, line 1406

Class

ViewExecutable
Represents a view as a whole.

Namespace

Drupal\views

Code

public function _build($key) {
    $handlers =& $this->{$key};
    foreach ($handlers as $id => $data) {
        if (!empty($handlers[$id]) && is_object($handlers[$id])) {
            $multiple_exposed_input = [
                0 => NULL,
            ];
            if ($handlers[$id]->multipleExposedInput()) {
                $multiple_exposed_input = $handlers[$id]->groupMultipleExposedInput($this->exposed_data);
            }
            foreach ($multiple_exposed_input as $group_id) {
                // Give this handler access to the exposed filter input.
                if (!empty($this->exposed_data)) {
                    if ($handlers[$id]->isAGroup()) {
                        $converted = $handlers[$id]->convertExposedInput($this->exposed_data, $group_id);
                        $handlers[$id]->storeGroupInput($this->exposed_data, $converted);
                        if (!$converted) {
                            continue;
                        }
                    }
                    $rc = $handlers[$id]->acceptExposedInput($this->exposed_data);
                    $handlers[$id]->storeExposedInput($this->exposed_data, $rc);
                    if (!$rc) {
                        continue;
                    }
                }
                $handlers[$id]->setRelationship();
                $handlers[$id]->query($this->display_handler
                    ->useGroupBy());
            }
        }
    }
}

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