PbClasses - PbTpl-Tutorial

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>