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.

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-- und dem Attribute zusammen.

link---url URL des Links href oder URL aus der id einer Route
link---id ID des Links
link---relation Relation
link---label 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.

Default-View

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'));