Фильтрация theme_table в Drupal - PullRequest
0 голосов
/ 05 ноября 2010

Я только что создал таблицу данных на основе запроса и успешно отобразил ее с помощью theme_table ().

Теперь я хотел бы добавить несколько фильтров в таблицу, но не знаю, как поступить.

Есть ли встроенная функция, которая позволяет мне легко это сделать, или я должен вручную добавить форму и обновлять запрос / отображать результаты каждый раз, когда пользователь что-то выбирает?

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 05 ноября 2010

Я думаю, что вы хотите использовать pager_query и tablesort_sq l: он специально создан для создания таблиц данных с возможностями разбивки на страницы и сортировки (а темы обычно выделяют такие таблицы из коробка).

Пример:

<?php
    // The regular query without sorting or pagination parameters
    $sql = 'SELECT cid, first_name, last_name, company, city FROM {clients}';

    // Number of rows per page
    $limit = 20;

    // List of table columns ("field" is the matching database column from the sql query)
    $header = array(
        array('data' => t('Name'), 'field' => 'last_name', 'sort' => 'asc'),
        array('data' => t('Company'), 'field' => 'company'),
        array('data' => t('City'), 'field' => 'city')
    );

    // Calculates how to modify the SQL query according to the current pagination and sorting settings
    // Then performs the database query
    $tablesort = tablesort_sql($header);
    $result = pager_query($sql . $tablesort, $limit);
    $rows = array();
    while ($client = db_fetch_object($result)) {
        $rows[] = array(l($client->last_name.', '.$client->first_name, 'client/'.$client->cid), $client->company, $client->city);
    }

    // A message in case no results were found
    if (!$rows) {
        $rows[] = array(array('data' => t('No client accounts created yet.'), 'colspan' => 3));
    }

    // Then you can pass the data to the theme functions
    $output .= theme('table', $header, $rows);
    $output .= theme('pager', NULL, $limit, 0);

    // And return the HTML output
    print $output;
?>

(я добавил комментарии, но оригинальная версия примера взята с этой страницы )


В качестве альтернативы, возможно, вам вообще не нужно создавать модуль, если вы просто пытаетесь создать страницу, которая отображает список данных, вы можете предпочесть использовать модуль Views .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...