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.