function ViewExecutable::getExposedInput

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

Figures out what the exposed input for this view is.

They will be taken from \Drupal::request()->query or from something previously set on the view.

Return value

string[] An array containing the exposed input values keyed by the filter and sort name.

See also

self::setExposedInput()

File

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

Class

ViewExecutable
Represents a view as a whole.

Namespace

Drupal\views

Code

public function getExposedInput() {
    // Fill our input either from \Drupal::request()->query or from something
    // previously set on the view.
    if (empty($this->exposed_input)) {
        // Ensure that we can call the method at any point in time.
        $this->initDisplay();
        $this->exposed_input = \Drupal::request()->query
            ->all();
        // unset items that are definitely not our input:
        foreach ([
            'page',
            'q',
        ] as $key) {
            if (isset($this->exposed_input[$key])) {
                unset($this->exposed_input[$key]);
            }
        }
        // If we have no input at all, check for remembered input via session.
        if (empty($this->exposed_input) && $this->request
            ->hasSession()) {
            $session = \Drupal::request()->getSession();
            // If filters are not overridden, store the 'remember' settings on the
            // default display. If they are, store them on this display. This way,
            // multiple displays in the same view can share the same filters and
            // remember settings.
            $display_id = $this->display_handler
                ->isDefaulted('filters') ? 'default' : $this->current_display;
            if (!empty($session->get('views')[$this->storage
                ->id()][$display_id])) {
                $this->exposed_input = $session->get('views')[$this->storage
                    ->id()][$display_id];
            }
        }
    }
    return $this->exposed_input;
}

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