Programmieren > Sprachen > PHP > Zend 2

Das Rendering des Zend Framework 2

Auf dieser Seite geht es darum, wie aus einer Datenstruktur, die vom Controller geliefert wird, eine HTML-Seite wird. Ausführlich wird dies auf der Seite Zend\View Quick Start beschrieben. Hier beschreibe ich nur den einfachsten Fall, der aber für die meisten Situationen ausreichend sein sollte.

Ein Template finden

Wo die Templates zu finden sind wird in jedem Modul in der Datei modul.config.php definiert. Im Bereich view_manager wird eine template_map definiert. Hier wird einem Template-Namen eine phtml-Datei zugeordnet. Der Template-Name wird automatisch ermittelt nache dem Schema

modulname/controllername/actionname

Die Namen werden in Kleinbuchstaben gewandelt. Falls ein Name aus mehreren Wörtern besteht, werden diese durch Bindestriche getrennt. Wird also z.B. im Modul Application der Controller HelloWorldController aufgerufen und darin die Funktion indexActionergibt sich als Template-Name

application/hello-world/index

Dieser Template-Name kann nun über die Template-Map einer beliebigen Datei zugeordnet werden. Es hat sich jedoch eingebürgert einem solchen Template-Namen die Datei view/application/hello-world/index.php zuzuordnen. Das globale Template (mit html-, head-, und body-Tag) in das die anderen Templates eingebunden werden hat den Template-Namen layout/layout und muss über die Template-Map ebenfalls einer phtml-Datei zugewiesen werden

Das globale Template

Ein einfaches Beispiel für ein globales Template ist

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
      <title>Zend2 Skeleton</title>
    </head>
    <body>
        <?php echo $this->content; ?>
    </body>
</html>

Die wichtigste Zeile ist <?php echo $this->content; ?> . Hier wird der Inhalt der Sub-Templates eingefügt. Auf der Seite View Helpers werden einige von Zend2 bereits vorgefertigte View Helper vorgestellt, mit denen z.B. der Inhalt des Head-Tag noch variabel gestaltet werden kann.

Die Sub-Templates

Ein Beispiel für ein einfaches Sub-Template ist

<h1><?php echo $this->title ?></h1>
<p><?php echo $this->message ?></p>

Hier ist sehr gut sichtbar wie die dem Template übergebene Datenstruktur in HTML umgesetzt wird. Prinzipiell hat man hier alle Möglichkeiten der Sprache PHP zur Verfügung, so dass auch sehr komplexe Datenstrukturen in HTML umgesetzt werden können.