Dataset

Eine der wichtigsten Aufgabe einer Template-Engine ist das Einfügen von Werten aus dem Modell in die HTML-Seite. Das Zuweisen der Daten aus dem Modell erfolgt in der Alvine-HTML5-Komponete über die Methode Engine::setDataset().

Je nach Anwendungsfall ist das Dataset unterschiedlich aufgebaut.

Das folgende Template soll eine Liste von Städten in form einer HTML-Tabelle ausgeben.

<div>
    <table>
        <tr data-repeat="city dataset:list"> 
            <td data-replace="dataset:city | index:name">Musterstadt</td>
            <td data-replace="dataset:city | index:plz">12345</td> 
            <td data-replace="dataset:city | index:einwohner">98456</td>     
        </tr>
    </table>
</div>

Für dieses Template braucht die Engine folgende Datenstruktur:

$cityList=new \Alvine\Types\Collection();

$cityA=new \Alvine\Types\Map();
$cityA->setValue('name', 'München');
$cityA->setValue('plz', '80331');
$cityA->setValue('einwohner', '1365015');

$cityList->append($cityA);

$cityB=new \Alvine\Types\Map();
$cityB->setValue('name', 'Frankfurt');
$cityB->setValue('plz', '60311');
$cityB->setValue('einwohner', '691520');

$cityList->append($cityB);

$dataset=new \Alvine\Markup\Html\Dataset();
$dataset->setValue('list', $cityList);

$engine=new \Alvine\Markup\Html\Engine();
$engine->setDataset($dataset);

// Variable $template muss das HTML-Template als Zeichenkette enthalten
echo $engine->getHTML($template);

Die Collection definiert dabei die einzelnen Zeilen und die Map die Spalten der Tabelle.