function ViewExecutable::setDisplay

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

Sets the current display.

Parameters

string $display_id: The ID of the display to mark as current.

Return value

bool TRUE if the display was correctly set, FALSE otherwise.

13 calls to ViewExecutable::setDisplay()
ViewExecutable::addHandler in core/modules/views/src/ViewExecutable.php
Adds an instance of a handler to the view.
ViewExecutable::build in core/modules/views/src/ViewExecutable.php
Builds the query for the view.
ViewExecutable::buildRenderable in core/modules/views/src/ViewExecutable.php
Builds the render array outline for the given display.
ViewExecutable::executeDisplay in core/modules/views/src/ViewExecutable.php
Executes the given display, with the given arguments.
ViewExecutable::getHandler in core/modules/views/src/ViewExecutable.php
Gets the configuration of a handler instance on a given display.

... See full list

File

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

Class

ViewExecutable
Represents a view as a whole.

Namespace

Drupal\views

Code

public function setDisplay($display_id = NULL) {
    // If we have not already initialized the display, do so.
    if (!isset($this->current_display)) {
        // This will set the default display and instantiate the default display
        // plugin.
        $this->initDisplay();
    }
    // If no display ID is passed, we either have initialized the default or
    // already have a display set.
    if (!isset($display_id)) {
        return TRUE;
    }
    $display_id = $this->chooseDisplay($display_id);
    // Ensure the requested display exists.
    if (!$this->displayHandlers
        ->has($display_id)) {
        trigger_error(new FormattableMarkup('setDisplay() called with invalid display ID "@display".', [
            '@display' => $display_id,
        ]), E_USER_WARNING);
        return FALSE;
    }
    // Reset if the display has changed. It could be called multiple times for
    // the same display, especially in the UI.
    if ($this->current_display != $display_id) {
        // Set the current display.
        $this->current_display = $display_id;
        // Reset the style and row plugins.
        $this->style_plugin = NULL;
        $this->plugin_name = NULL;
        $this->rowPlugin = NULL;
    }
    if ($display = $this->displayHandlers
        ->get($display_id)) {
        // Set a shortcut.
        $this->display_handler = $display;
        return TRUE;
    }
    return FALSE;
}

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