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.