View¶
Ein Web-View ist eine Datenobjekt und enthält alle Inhalte - inklusive den Headern und dem Status der Antwort. Die Instanz selber hat keine Funktion und bei der Umsetzung von Views sollte auch keine Funktionalität in die Views gelegt werden. Über Hilfsfunktionen kann das Erstellen der Views aber durch Funktionen unterstützt werden.
Hilfsfunktionen zum Erstellen von Views¶
Um Views zu erstellen stehen unterschiedliche statische Methoden zum Erstellen des Views zur Verfügung.
Mit der Methode View::getInstanceFromMap()
kann zum Beispiel ein Web-View aus einem Presenter erstellt werden.
Links¶
In einer Route im Routing können Links die zu dieser Route gehören definiert werden. Wird der Standardview
über die Methode View::getInstanceFromMap()
initialisiert, so stehen diese Links als Platzhalter im View
zur Verfügung.
<links>
<!-- Es muss eine Route mit der ID routeX2
in der Routingtabelle hinterlegt sein -->
<link id="routeX2" id="r1" relation="action" label="myR1"/>
<!-- Direkte Links -->
<link href="http://www.example.com/r2" id="r2" label="r2"/>
<link href="http://www.example.com/r3" id="r3" label="r3"/>
<link href="http://www.example.com/r4" id="r4" label="r4"/>
</links>
Im Template können diese Links folgendermaßen verbaut werden.
Der Platzhalter setzt sich aus link-
link- |
URL des Links | href oder URL aus der id einer Route |
link- |
ID des Links | |
link- |
Relation | |
link- |
Bezeichnung des Links |
<a data-relation="action"
href="${link-action-r1-url}"
id="${link-action-r1-id}">${link-action-r1-label}</a>
<a data-relation="undefined"
href="${link-undefined-r3-url}"
id="${link-undefined-r3-id}">${link-undefined-r3-label}</a>
Standardviews¶
DefaultView¶
Die DefaultView-Klasse stellt eine Standardansicht mit verschiedenen Informationen zur Verfügung und dient hauptsächlich für Test und Entwicklungsaufgaben.
Json¶
Der Json-View gibt Daten als Json-Zeichenkette aus. Über die Hilfsfunktion Json::getInstance() kann eine Dataset-Objekt übergeben werden, das in eine Json-Zeichenkette gewandelt wird.
Page¶
Der Page-View arbeitet zusammen mit dem Page-Presenter zusammen und gibt eine HTML-Seite aus.
Location¶
Der Location-View ermöglicht einen einfachen View, der einen Redirect im Browser auslöst.
NoContent¶
Der NoContent-View ist ein für den Status-Code NoContent spezialiserter View.
Void¶
Der Void-View ist ein leerer View.
Created/Update¶
Die beiden Views geben den entsprechenden Statuscode an den Browser weiter.
HTTPError¶
Mit der HTTPError-View-Klasse kann schnell eine HTTP-Fehlerseite erstellt werden. Die
Hilfsfunktion HTTPError::getInstance()
sucht im Fehlerseiten-Verzeichnis
der Anwendung nach einer Datei <statuscode>.<MIME-Subtype>:
also zum Beispiel nach der Datei
error/404.html
. Wird diese Datei nicht gefunden wird eine leere HTML-Seite mit der Fehlermeldung
ausgegeben.
$view = HTTPError::getInstance($presenter,
new \Alvine\Net\Http\StatusCode(404),
new \Alvine\Types\Mime\MIMEType('text/html'));