Das Seitenlayoutmodul von Zend Framework – Zend_Layout – kann zusammen mit MVC oder alleine verwendet werden. In diesem Artikel wird nur die Verwendung mit MVC erläutert.
1. Das Layout-Skript
erstellt einen Layouts-Ordner unter „Anwendung/Ansichten“. Der Hauptcode des Layout-Skripts „layout.phtml“ lautet wie folgt:
<?php echo $this->doctype('XHTML1_STRICT') ?>
<html>
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php echo $this->headTitle() ?>
<?php
$this->headLink()->appendStylesheet("/styles/main.css");
// Weitere Links hinzufügen ...
?>
<?php echo $this->headLink() ?>
</head>
<Körper>
<div id="header">
<?php echo $this->partial('header.phtml') ?>
</div>
<Tabelle>
<tr>
<td valign=top>
<div id="leftcolumn">
<?php echo $this->partial('leftcolumn.phtml') ?>
</div>
</td>
<td valign=top>
<div id="content">
<?php echo $this->layout()->content ?>
</div>
</td>
</tr>
</table>
<div id="footer">
<?php echo $this->partial('footer.phtml') ?>
</div>
</body>
</html>
Zusätzlich zu „layout.phtml“ müssen Sie auch Dateien wie „header.phtml“, „leftcolumn.phtml“, „footer.phtml“ und „main.css“ schreiben.
Die Zend Framework-Dokumentation verwendet eine Ansicht, um die Anwendung des Seitenlayouts darzustellen.
2. Das Festlegen
des Seitenlayouts unter MVC ist sehr einfach. Bearbeiten Sie html/index.php und fügen Sie die folgenden zwei Codezeilen hinzu:
/** Setuplayout*/
require_once 'Zend/Layout.php';
Zend_Layout::startMvc($rootPath . '/application/views/layouts');
Hinweis: Nach dem Starten des Seitenlayouts müssen Sie die vorhandenen Seiten anpassen und unnötige HTML-Elemente entfernen, wie z. B. <header> <title> <body > Warten Sie mit dem Entfernen. Darüber hinaus können Sie den Titel der Seite über $this->headTitle() festlegen.
Das Ändern des Seitenlayouts ist ebenfalls sehr einfach. Verwenden Sie einfach den folgenden Code im Controller:
$this->_helper->layout->setLayout('new_layout');
Wenn alle Aktionen eines Controllers dasselbe Seitenlayout verwenden, was kann über die Initialisierungsfunktion des Controllers festgelegt werden:
öffentliche Funktion init() {
parent::init();
$this->_helper->layout->setLayout('new_layout');
}