Класс HTML Таблицы
Класс Таблица предоставляет функции, которые позволяют вам автоматически генерировать 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 позволяет вам задать шаблон таблицы, с помощью которого вы можете указать дизайн макета. Вот прототип шаблона:
$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);
Примечание
Вы заметите, что в шаблоне есть две группы блоков «строка». Они позволяют создавать чередующиеся цвета строк или элементы дизайна, которые чередуются с каждой итерацией данных строки.
Вам НЕ требуется отправлять полный шаблон. Если вам нужно изменить только части макета, вы можете просто отправить эти элементы. В этом примере изменяется только открывающий тег таблицы:
$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><strong>Blue</strong></td><td>Small</td>
-
generate([$table_data = NULL]) -
Параметры: - $table_data (mixed) – Данные для заполнения строк таблицы
Возвращает: 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'); // generates // <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); // Generates a table with this prototype <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 (массив) – Ассоциативный массив, содержащий значения шаблона
Возвращает: ИСТИНА при успехе, ЛОЖЬ при ошибке
Тип возвращаемого значения: bool
Позволяет установить ваш шаблон. Вы можете передать полный или частичный шаблон.
$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(" ");
-
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();
-
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/table.html