function TableSortExampleController::description

Same name in other branches
  1. 8.x-1.x tablesort_example/src/Controller/TableSortExampleController.php \Drupal\tablesort_example\Controller\TableSortExampleController::description()
  2. 4.0.x modules/tablesort_example/src/Controller/TableSortExampleController.php \Drupal\tablesort_example\Controller\TableSortExampleController::description()

A simple controller method to explain what the tablesort example is about.

1 string reference to 'TableSortExampleController::description'
tablesort_example.routing.yml in modules/tablesort_example/tablesort_example.routing.yml
modules/tablesort_example/tablesort_example.routing.yml

File

modules/tablesort_example/src/Controller/TableSortExampleController.php, line 45

Class

TableSortExampleController
Controller routines for tablesort example routes.

Namespace

Drupal\tablesort_example\Controller

Code

public function description() {
    // We are going to output the results in a table with a nice header.
    $header = [
        // The header gives the table the information it needs in order to make
        // the query calls for ordering. TableSort uses the field information
        // to know what database column to sort by.
[
            'data' => $this->t('Numbers'),
            'field' => 't.numbers',
        ],
        [
            'data' => $this->t('Letters'),
            'field' => 't.alpha',
        ],
        [
            'data' => $this->t('Mixture'),
            'field' => 't.random',
        ],
    ];
    // Using the TableSort Extender is what tells  the query object that we
    // are sorting.
    $query = $this->database
        ->select('tablesort_example', 't')
        ->extend('Drupal\\Core\\Database\\Query\\TableSortExtender');
    $query->fields('t');
    // Don't forget to tell the query object how to find the header information.
    $result = $query->orderByHeader($header)
        ->execute();
    $rows = [];
    foreach ($result as $row) {
        // Normally we would add some nice formatting to our rows
        // but for our purpose we are simply going to add our row
        // to the array.
        $rows[] = [
            'data' => (array) $row,
        ];
    }
    // Build the table for the nice output.
    $build = [
        '#markup' => '<p>' . t('The layout here is a themed as a table
           that is sortable by clicking the header name.') . '</p>',
    ];
    $build['tablesort_table'] = [
        '#theme' => 'table',
        '#header' => $header,
        '#rows' => $rows,
    ];
    return $build;
}