Daten importieren¶
Immer wiederkehrende Daten, wie die Adresse oder die E-Mail-Adresse können entweder direkt im Template verbaut werden und stehen somit zentral für alle Seiten zur Verfügung. Ein Nachteil ist, das diese Daten dann für alle Seiten, die dieses Template verwenden, identisch sind.
Eine andere Alternative ist der Import der Daten aus einer anderen Datei, einer Klasse oder einer URL.
Über den Abschnitt import
können externe Dateien, Ergebnis einer Klasse oder Daten aus einer URL
eingebunden werden. Die Daten stehen dann über das Dataset im Schlüssel global
zur Verfügung.
Im folgenden Beispiel werden die Dateien config/global.yml
und resource/locale/de.properties
importiert.
Je nach Dateiendung kommt der entsprechende Parser zum Einsatz.
import:
- config/global.yml
- resource/locale/de.properties
Die Datei global.yml
enthält in diesem Beispiel die Adresse
company-data:
company: Company Ltd.
address: Musterstrasse 1<br>12345 Musterhausen
mail: [email protected]
web: www.example.com
Im Template lassen sich diese Werte zum Beispiel so einsetzen:
<p class="text-muted"
data-replace="dataset:global | index:company-data | index:address">
Musterstraße 24
</p>
Die Sprachdatei de.properties
enthält Texte in der landessprache Deutsch.
i18n.addresses=Unsere Adresse
i18n.morinfos=Mehr erfahren
Der Zugriff darauf erfolgt folgendermaßen:
<p data-replace="dataset:global | index:i18n.addresses">
</p>
Inhalte von Urls lasssen sich über die Angabe der URL importieren. Hierzu muss vom Server der
Header Content-Type
mit application/json
oder application/yaml
zurückgegeben werden.
import:
- url:
- https://gominerva.github.io/minerva/doc/data/demo-01.json
- https://gominerva.github.io/minerva/doc/data/demo-02.json
Die Daten der Dateien stehen dann im Schlüssel global
mit den Einträgen fruit
, size
, color
für die
erster Datei
{
fruit: "Apple",
size: "Large",
color: "Red"
}
und city
und country
für die zweite Datei zur Verfügung.
{
"city": "Berlin",
"country": "Germany"
}
Das Ergebnis von Klassen kann über den Schlüssel datasource
eingebunden werden.
Eine Datasource benötigt einen Klassennamen und optionale Argumente. In dem folgendne Beispiel
wird das aktuelle Datum im Format d.m.Y
in das Dataset mit dem Schlüssel current-date
eingehängt.
import:
- datasource:
-
class: \Alvine\Application\Minerva\DataSource\CurrentDate
arguments:
format: "d.m.Y"
key: current-date
Die einzelnen Imports können kombiniert werden. Werden Werte in mehreren Quellen definiert, so überschriebt der letzte Wert die vorherigen. Dies gilt insbesondere für Aufzählungen.
Wird keine Schlüssel key
angegeben, so wird der Standard current-date
verwendet.
Im nächsten Artikel wird die Verwendung einer eigenen Datasource vorgestellt.