Класс HTML Таблиц 

Класс таблиц обеспечивает функции, которые позволяют автоматически генерировать HTML таблицы из массивов или результирующих наборов данных.

Использовние класса таблиц 

Инициализация класса 

Как и большинство классов CodeIgniter, класс таблиц инициализируется в вашем контроллере с помощью $this->load->library() метода:

$this->load->library('table');

После загрузки объекта библиотека будет доступна через:

$this->table

Примеры 

Вот пример, показывающий, как можно создать таблицу из многомерного массива. Обратите внимание, что первый индекс массива станет заголовком таблицы (или вы можете установить собственные заголовки с помощью set_heading() метода описанного в функции ниже).

$this->load->library('table');

$data = array(
        array('Name', 'Color', 'Size'),
        array('Fred', 'Blue', 'Small'),
        array('Mary', 'Red', 'Large'),
        array('John', 'Green', 'Medium')
);

echo $this->table->generate($data);

Вот пример таблицы, созданной из результатов запросов к базе данных. Класс таблицы будет автоматически создавать заголовки, основанные на именах таблиц (или вы можете установить собственные заголовки с помощью set_heading() метода описанного в функции ниже).

$this->load->library('table');

$query = $this->db->query('SELECT * FROM my_table');

echo $this->table->generate($query);

Вот пример, показывающий, как можно создать таблицу с помощью дискретных параметров:

$this->load->library('table');

$this->table->set_heading('Name', 'Color', 'Size');

$this->table->add_row('Fred', 'Blue', 'Small');
$this->table->add_row('Mary', 'Red', 'Large');
$this->table->add_row('John', 'Green', 'Medium');

echo $this->table->generate();

Вот тот же пример, только вместо отдельных параметров, используется массив:

$this->load->library('table');

$this->table->set_heading(array('Name', 'Color', 'Size'));

$this->table->add_row(array('Fred', 'Blue', 'Small'));
$this->table->add_row(array('Mary', 'Red', 'Large'));
$this->table->add_row(array('John', 'Green', 'Medium'));

echo $this->table->generate();

Изменение внешнего вида ваших таблиц 

Класс таблицы позволяет установить шаблон таблицы, в котором вы можете указать дизайн вашего макета. Вот прототип шаблона:

$template = array(
        'table_open'            => '<table border="0" cellpadding="4" cellspacing="0">',

        'thead_open'            => '<thead>',
        'thead_close'           => '</thead>',

        'heading_row_start'     => '<tr>',
        'heading_row_end'       => '</tr>',
        'heading_cell_start'    => '<th>',
        'heading_cell_end'      => '</th>',

        'tbody_open'            => '<tbody>',
        'tbody_close'           => '</tbody>',

        'row_start'             => '<tr>',
        'row_end'               => '</tr>',
        'cell_start'            => '<td>',
        'cell_end'              => '</td>',

        'row_alt_start'         => '<tr>',
        'row_alt_end'           => '</tr>',
        'cell_alt_start'        => '<td>',
        'cell_alt_end'          => '</td>',

        'table_close'           => '</table>'
);

$this->table->set_template($template);

Примечание

Как вы заметили, существует два набора блоков “row” в шаблоне. Они позволяют вам создавать чередующиеся цвета строк или элементов дизайна, которые чередуются при каждом повторении данные строки.

Вы НЕ обязаны использовать готовый шаблон. Если нужно только поменять элементы макета, достаточно просто выбрать нужные элементы. В этом примере изменения только в открывающем тэге таблицы:

$template = array(
        'table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">'
);

$this->table->set_template($template);

Вы также можете установить эти значения по умолчанию в файле конфигурации.

Справка класса 

class CI_Table 
$function = NULL

Позволяет указать родную функцию PHP или действительный массив функции объекта, которые будут применены ко всем ячейкам.

$this->load->library('table');

$this->table->set_heading('Name', 'Color', 'Size');
$this->table->add_row('Fred', '<strong>Blue</strong>', 'Small');

$this->table->function = 'htmlspecialchars';
echo $this->table->generate();

В приведенном выше примере, данные во всех ячейках были обработаны функцией PHP htmlspecialchars(), в результате:

<td>Fred</td><td>&lt;strong&gt;Blue&lt;/strong&gt;</td><td>Small</td>
generate([$table_data = NULL]) 
Параметры:
  • $table_data (смешанный) – Данные для заполнения строк таблицы
Возвращает:

HTML таблица

Возвращаемый тип:

строка

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

set_caption($caption) 
Параметры:
  • $caption (строка) – Подпись к таблице
Возвращает:

CI_Table экземпляр (цепочка методов)

Возвращаемый тип:

CI_Table

Позволяет добавлять подпись к таблице.

$this->table->set_caption('Colors');
set_heading([$args = array()[, ...]]) 
Параметры:
  • $args (смешанный) – Массив или несколько строк, содержащих названия столбцов таблицы
Возвращает:

CI_Table экземпляр (цепочка методов)

Возвращаемый тип:

CI_Table

Позволяет задать заголовки таблицы. Вы можете предоставить массив или дискретные параметры:

$this->table->set_heading('Name', 'Color', 'Size');

$this->table->set_heading(array('Name', 'Color', 'Size'));
add_row([$args = array()[, ...]]) 
Параметры:
  • $args (смешанный) – Массив или несколько строк, содержащих строку значений
Возвращает:

CI_Table экземпляр (цепочка методов)

Возвращаемый тип:

CI_Table

Позволяет вам добавить строку к таблице. Вы можете предоставить массив или дискретные параметры:

$this->table->add_row('Blue', 'Red', 'Green');

$this->table->add_row(array('Blue', 'Red', 'Green'));

Если вы хотели бы установить индивидуальный атрибута тега ячейки, вы можете использовать ассоциативный массив для этой ячейки. Ассоциативный ключ data определяет данные ячейки. Любые другие пары ключ => значение добавляются как key=’val’ атрибуты тега:

$cell = array('data' => 'Blue', 'class' => 'highlight', 'colspan' => 2);
$this->table->add_row($cell, 'Red', 'Green');

// Создает
// <td class='highlight' colspan='2'>Blue</td><td>Red</td><td>Green</td>
make_columns([$array = array()[, $col_limit = 0]]) 
Параметры:
  • $array (массив) – Массив, содержащий несколько строк данных
  • $col_limit (число) – Количество столбцов в таблице
Возвращает:

Массив HTML столбцов таблицы

Возвращаемый тип:

массив

Этот метод принимает одномерный массив в качестве входных данных и создает многомерный массив с глубиной, равной количеству желаемых столбцов. Это позволяет отображать единый массив с множеством элементов, в таблице, которая имеет фиксированное число столбцов. Рассмотрим такой пример:

$list = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve'); $new_list = $this->table->make_columns($list, 3); $this->table->generate($new_list); // Создает таблицу с этим прототипом <table border="0" cellpadding="4" cellspacing="0"> <tr> <td>one</td><td>two</td><td>three</td> </tr><tr> <td>four</td><td>five</td><td>six</td> </tr><tr> <td>seven</td><td>eight</td><td>nine</td> </tr><tr> <td>ten</td><td>eleven</td><td>twelve</td></tr> </table>
set_template($template) 
Параметры:
  • $template (массив) – Ассоциативный массив, содержащий значения шаблона
Возвращает:

TRUE при успехеs, FALSE при неудаче

Возвращаемый тип:

булево

Позволяет установить шаблон. Вы можете предоставить полный или частичный шаблон.

$template = array(
        'table_open'  => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">'
);

$this->table->set_template($template);
set_empty($value) 
Параметры:
  • $value (смешанный) – Значение подставляемое в пустые клетки
Возвращает:

CI_Table экземпляр (цепочка методов)

Возвращаемый тип:

CI_Table

Позволяет установить значение по умолчанию для ячеек таблицы, которые являются пустыми. Можно, например, установить неразрывный пробел:

$this->table->set_empty("&nbsp;");
clear() 
Возвращает:CI_Table экземпляр (цепочка методов)
Возвращаемый тип:CI_Table

Позволяет очистить заголовок таблицы и данные строки. Если нужно показать несколько таблиц с различными данными, вы должны вызывать этот метод после каждой созданной таблицы, чтобы очистить данные предыдущей таблицы. Пример:

$this->load->library('table');

$this->table->set_heading('Name', 'Color', 'Size');
$this->table->add_row('Fred', 'Blue', 'Small');
$this->table->add_row('Mary', 'Red', 'Large');
$this->table->add_row('John', 'Green', 'Medium');

echo $this->table->generate();

$this->table->clear();

$this->table->set_heading('Name', 'Day', 'Delivery');
$this->table->add_row('Fred', 'Wednesday', 'Express');
$this->table->add_row('Mary', 'Monday', 'Air');
$this->table->add_row('John', 'Saturday', 'Overnight');

echo $this->table->generate();