Example 3 - Building lists and tables
To fill templates repeatedly, you don't need any loop logic but use the fillRowTpl() method. Here too, the parameters can be used in different ways, as shown in the example.
Example table
ID | Name | Test Value |
---|---|---|
1 | Alpha | Value 1 |
2 | Bravo | Value 2 |
3 | Charlie | Value 3 |
4 | Delta | Value 4 |
5 | Echo | Value 5 |
A second table
ID | Name | Test Value |
---|---|---|
101 | Foxtrot | Test Value A |
102 | Golf | Test Value B |
103 | Hotel | Test Value C |
104 | India | Test Value D |
105 | Juliet | Test Value E |
106 | Kilo | Test Value F |
PHP-Code
<?php
use PbClasses\PbTpl;
try {
$c = new PbTpl('./templates/content_rows.tpl');
} catch (\Exception $exc) {
echo $exc->getMessage();
exit;
}
$tableData1 = [
[
"ID" => 1,
"Name" => "Alpha",
"TestValue" => "Value 1"
],
[
"ID" => 2,
"Name" => "Bravo",
"TestValue" => "Value 2"
],
[
"ID" => 3,
"Name" => "Charlie",
"TestValue" => "Value 3"
],
[
"ID" => 4,
"Name" => "Delta",
"TestValue" => "Value 4"
],
[
"ID" => 5,
"Name" => "Echo",
"TestValue" => "Value 5"
]
];
$tablerows1 = $c->fillRowTpl('table_row', $tableData1);
//A second table
$keyArr = [
"id", "name", "testvalue"
];
$tableValueData = [
[
101,
"Foxtrot",
"Test Value A"
],
[
102,
"Golf",
"Test Value B"
],
[
103,
"Hotel",
"Test Value C"
],
[
104,
"India",
"Test Value D"
],
[
105,
"Juliet",
"Test Value E"
],
[
106,
"Kilo",
"Test Value F"
]
];
$tablerows2 = $c->fillRowTpl('table_row', $keyArr, $tableValueData);
//Fill the cotent template
$seRe = [
'table_rows1' => $tablerows1,
'table_rows2' => $tablerows2
];
return $c->fillTpl('content', $seRe);
Template-Code
[content]
<h3>Example table</h3>
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Test Value</th>
</tr>
{TABLE_ROWS1}
</table>
<h3>A second table</h3>
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Test Value</th>
</tr>
{TABLE_ROWS2}
</table>
####### This Template is filled first. #########
[table_row]
<tr>
<td>{ID}</td>
<td>{NAME}</td>
<td>{TESTVALUE}</td>
</tr>