function Table::buildSortPost

Same name in other branches
  1. 9 core/modules/views/src/Plugin/views/style/Table.php \Drupal\views\Plugin\views\style\Table::buildSortPost()
  2. 10 core/modules/views/src/Plugin/views/style/Table.php \Drupal\views\Plugin\views\style\Table::buildSortPost()
  3. 11.x core/modules/views/src/Plugin/views/style/Table.php \Drupal\views\Plugin\views\style\Table::buildSortPost()

Add our actual sort criteria

Overrides StylePluginBase::buildSortPost

File

core/modules/views/src/Plugin/views/style/Table.php, line 102

Class

Table
Style plugin to render each item as a row in a table.

Namespace

Drupal\views\Plugin\views\style

Code

public function buildSortPost() {
    $query = $this->view
        ->getRequest()->query;
    $order = $query->get('order');
    if (!isset($order)) {
        // check for a 'default' clicksort. If there isn't one, exit gracefully.
        if (empty($this->options['default'])) {
            return;
        }
        $sort = $this->options['default'];
        if (!empty($this->options['info'][$sort]['default_sort_order'])) {
            $this->order = $this->options['info'][$sort]['default_sort_order'];
        }
        else {
            $this->order = !empty($this->options['order']) ? $this->options['order'] : 'asc';
        }
    }
    else {
        $sort = $order;
        // Store the $order for later use.
        $request_sort = $query->get('sort');
        $this->order = !empty($request_sort) ? strtolower($request_sort) : 'asc';
    }
    // If a sort we don't know anything about gets through, exit gracefully.
    if (empty($this->view->field[$sort])) {
        return;
    }
    // Ensure $this->order is valid.
    if ($this->order != 'asc' && $this->order != 'desc') {
        $this->order = 'asc';
    }
    // Store the $sort for later use.
    $this->active = $sort;
    // Tell the field to click sort.
    $this->view->field[$sort]
        ->clickSort($this->order);
}

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