Le module de mise en page de Zend Framework - Zend_Layout - peut être utilisé avec MVC ou seul. Cet article traite uniquement de l'utilisation avec MVC.
1. Le script de mise en page
crée un dossier de mises en page sous application/views. Le code principal du script de mise en page layout.phtml est le suivant :
<?php echo $this->doctype('XHTML1_STRICT') ?>
<html>
<tête>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php echo $this->headTitle() ?>
<?php
$this->headLink()->appendStylesheet("/styles/main.css");
// ajoute plus de liens...
?>
<?php echo $this->headLink() ?>
</tête>
<corps>
<div id="en-tête">
<?php echo $this->partial('header.phtml') ?>
</div>
<tableau>
<tr>
<td valign=haut>
<div id="colonnegauche">
<?php echo $this->partial('leftcolumn.phtml') ?>
</div>
</td>
<td valign=haut>
<div id="content">
<?php echo $this->layout()->content ?>
</div>
</td>
</tr>
</table>
<div id="pied de page">
<?php echo $this->partial('footer.phtml') ?>
</div>
</corps>
</html>
En plus de layout.phtml, vous devez également écrire des fichiers tels que header.phtml, leftcolumn.phtml, footer.phtml et main.css.
La documentation du Zend Framework utilise une vue pour représenter l'application de la mise en page.
2. Définir la mise en page.
Définir la mise en page sous MVC est très simple. Modifiez html/index.php et ajoutez les deux lignes de code suivantes :
/** Setuplayout*/.
require_once 'Zend/Layout.php';
Zend_Layout::startMvc($rootPath . '/application/views/layouts');
Remarque : Après avoir démarré la mise en page, vous devez ajuster les pages existantes et supprimer les éléments HTML inutiles, tels que <header> <title> <body > Attendez pour supprimer. De plus, vous pouvez définir le titre de la page via $this->headTitle().
Changer la mise en page de la page est également très simple, il suffit d'utiliser le code suivant dans le contrôleur :
$this->_helper->layout->setLayout('new_layout');
Si toutes les actions d'un contrôleur utilisent la même mise en page, ce qui peut être défini via la fonction d'initialisation du contrôleur :
public function init() {
parent::init();
$this->_helper->layout->setLayout('new_layout');
}