Direkt zum Hauptbereich

re:publica 2017

re:publica 17 #LoveOutLoud

ZendFramework2: Templates sind cool... 003

Ein zentraler Ansatz des ZendFrameworks ist ja die Trennung der verschiedenen Anwendungsteile in die berühmten Model-View-Controller-Komponenten um die Anwendung leichter wartbar zu machen.

Nicht immer ist dieser Weg auch konsequent gangbar, was zumeist die View-Komponente betrifft, die ja nicht nur die Präsentation aller Daten sondern auch die Darstellung aller Dateneingabe- und Administrationsfunktionen übernehmen muss.

Damit da alles an der richtigen Stelle landet, braucht es manchmal doch mehr als nur eine foreach-Iteration im View.

Grundsätzlich sollten jedoch die Daten im Controller oder gar schon im Model aufbereitet werden, so dass bloß noch die Ausgabe der Daten/Objekte im View notwendig ist.

Der Ordner view ist ein Standardordner im Ordner eures aktuellen Projekt-Moduls, also in der SkeletonApplication z.B. der Ordner /module/Application.

In diesem Ordner entsteht für jedes Modul ein neuer gleichnamiger Ordner ensteht, der hier allerdings kleingeschrieben wird.

Im Ordner eines Moduls wiederum entsteht für jeden Controller des Moduls ein Unterordner, der dem ersten Teil des Klassennamens in Kleinschrift entspricht:
Also für den IndexController entsprechend index.

Ebenso enthält dieser Ordner per Default einen Ordner für die Error-Templates und den Ordner für das zentrale Layout.

Der letztere ist auch jener, den wir uns zusammen als erstes ansehen werden.

View-Dateien sind  im Prinzip gemischte HTML- und PHP-Dateien, weshalb sie im Framework auch die Endung .phtml tragen.

Der Datei layout.phtml kommt dabei gewissermaßen eine staatstragende Aufgabe zu, denn aus ihr heraus wird der aktuelle View aufgerufen.

Sie ist also genau der richtige Ort um den Seitenkopf und den Footer zu beherbergen, die meistens ja Bestandteil jeder Seite der Anwendung sind.

Definitiv ruft man hier auch am sinnvollsten die Standard-Stylesheets auf und initialisiert hier Javascript-Bibliotheken und es ist z.B. auch ein guter Ort Rechte zu prüfen bevor der Inhalt geladen wird.

Hier als Codebeispiel die layout.pthml meiner Website skriptbu.de:


Die Datei spricht eigentlich fast für sich selbst:
Im Kopf werden Dateien eingebunden, wobei ich mich hier für die traditionelle Methode entscheiden habe, denn man könnte statt der echo-Befehle ja auch echte View-Helper aus dem Framework bemühen.

Ich wollte an der Stelle einfach mal keinen PHP-Code, der dieselbe Funktionalität  bietet, wenn eine eventuell dynamische Übermittlung von Inhalten nicht vorgesehen ist.

Der entscheidende Moment des Tamplates ist der Befehl $this->content, der den View des aktuellen Controllers an dieser Stelle implementiert.

Wie an dieser Stelle Controller und View verzahnt werden, schauen wir uns in der nächsten Folge an.
Kommentar veröffentlichen

Beliebte Posts aus diesem Blog

openSUSE 12.3: Ebooks mit DRM lesen

Grundsätzlich war es zwar nicht wirklich dringend nötig, aber letztlich auch eine Frage der Ehre, dass ich das Problem endlich mal angehe...

Ich besitze eine Menge ehrlich erworbener und bislang vorwiegend auf meinem OYO gelesener Ebooks, deren Manko es bislang war, das sämtliche Ebook-Reader-Software unter Linux die Kooperation mit diesen DRM-geschützten Werken verweigerte.

Auf Microsoft-Betriebssystemen übernimmt die Software Adobe Digital Editions diese Aufgabe und verwaltet die Adobe-ID und die damit lesbaren Bücher.

ADE hatte dieses Problem bislang auch perfekt in der bis vor kurzem noch vorhandenen virtuellen Windows-Maschine gelöst, die nun aber auch nicht mehr existiert.

Was also tun?
Calibre ist ein netter Reader, an meine DRM-Bücher komme ich aber hier nicht...

Also warum nicht Adobe Digital Editions installieren?

Wir sind ja auf einem Linux-System, also gibt es für dieses Problem eine am Ende doch auch recht einfache Lösung, die allerdings die Registrierung eines Accounts b…

Eishockey: Wenn dem Torhüter langweilig wird...

...geht er aufs Eis.Unter diesem Motto muss man wohl das Pokal-Derby gegen die "Rivalen" vom Glockenturm sehen:
Hütete er einen Tag früher noch als Goalie bei der Niederlage in Niesky das Tor, trug sich Christian Krüger heute als Torschütze des 5:0 in die Scorerliste des Spieles ein. Die gestrige Niederlage in Niesky ist ja die Folge einer schlichten Kausalkette von Verletzten, durch die Arbeit verhinderten, den Playoffs in Weißwasser bis zur eigentlichen Ursache, dem fehlenden Dach und damit fehlendem Eis in Niesky und lässt sich,angesichts von gerade mal 10 reisenden Spielern der Akademiker, auch verstehen, brachte sie aber auf dem Weg der "Mission Finale" leider nicht voran.Das nun Krüger zum Torschützen wird, ist ein Zeichen beständigen Personalmangels in der Post-Season, der geradezu symptomatisch für die Teilnehmer der gesamten Pokalrunde zu sein scheint.Doch in dieser Partie, ob nun mit dezimiertem Kader oder nicht, sind die Weddinger schlicht die Favoriten u…