Фреймворк CodeIgniter Version 2.1.3


Класс HTML-таблиц (HTML Table Class)

Класс таблиц предоставляет функции, которые позволяют вам автоматически генерировать 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();

Изменение вида вашей таблицы

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

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

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

                    '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($tmpl);

Примечание:  Обратите внимание, что здесь два набора блоков "row". Это позволяет вам создавать альтернативные цвета строк или элементы дизайна для каждой итерации строковых данных.

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

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

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

Справка по фунциям

$this->table->generate()

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

$this->table->set_caption()

Позволяет вам добавить название таблицы.

$this->table->set_caption('Colors');

$this->table->set_heading()

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

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

$this->table->add_row()

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

$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>

$this->table->make_columns()

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

$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>

$this->table->set_template()

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

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

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

$this->table->set_empty()

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

$this->table->set_empty("&nbsp;");

$this->table->clear()

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

$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();

$this->table->function

Позволяет вам указывать родные функции 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>
    Поддержать сайт на родительском проекте КГБ