Класс HTML Table
Класс Table предоставляет функции, которые позволяют вам автоматически генерировать HTML код таблиц из массивов или наборов результатов запросов к базе данных.
Инициализация класса
Как и большинство других классов в CodeIgniter, класс Table инициализируется в вашем контроллере при помощи функции $this->load->library:
$this->load->library('table');
Однажды загруженный, объект библиотеки 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();
Изменение внешнего вида вашей таблицы
Класс Table позволяет задать шаблон, в соответвии с которым вы можете определить дизайн вашей таблицы. Вот прототип шаблона:
$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'));
$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(" ");
$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();