Programmer's Reference Guide

Zend_View

Introduction

Zend_View est une classe qui permet de travailler avec la partie "Vue" du motif de conception Modèle-Vue-Contrôleur. Elle existe pour aider à garder la vue séparée du modèle et des scripts du contrôleur. Elle fournie un système d'aide, de filtres d'affichage, et d'échappement de variables.

Zend_View est un système de template agnostique ; vous pouvez utiliser PHP comme langage de template, ou créer des instances d'autres systèmes de templates, et les manipuler à travers les scripts de vue.

L'utilisation de Zend_View se déroule en deux étapes principales : 1. Votre script de contrôleur crée une instance de Zend_View et assigne des variables à cette instance. 2. Le contrôleur dit à Zend_View d'effectuer le rendu d'une vue particulière, et de ce fait va donner le contrôle au script de vue, qui va générer l'affichage.

Script du Contrôleur

Comme exemple simple, imaginons que votre contrôleur aie une liste de données sur des livres qu'il veut afficher en passant par une vue. Le contrôleur pourrait alors ressembler à ceci :

<?php
// utilise un modèle pour obtenir les données sur les livres : auteurs et titres
$data = array(
    array(
        'auteur' => 'Hernando de Soto',
        'titre' => 'Le mystère du capitalisme'
    ),
    array(
        'auteur' => 'Henry Hazlitt',
        'titre' => 'Les sciences économique en un cours'
    ),
    array(
        'auteur' => 'Milton Friedman',
        'titre' => 'Libre de choisir'
    )
);

// assigniation des données du livre à une instance Zend_View
Zend_Loader::loadClass('Zend_View');
$view = new Zend_View();
$view->books = $data;

// et appel du script de rendu d'affichage appelé "booklist.php"
echo $view->render('booklist.php');
        

Script de vue

Maintenant, nous avons besoin d'associer le script de vue "booklist.php". C'est un script PHP comme les autres, à une exception près : il s'exécute dans la portée de l'instance Zend_View, ce qui veut dire que les référence à $this pointent vers les attributs et les méthodes de Zend_View. (Les variables assignées à l'instance par le contrôleur sont des propriétés publiques de l'instance Zend_View). Ainsi un script de vue de base pourrait ressembler à ceci:

<?php if ($this->books): ?>

    <!-- La table des livres -->
    <table>
        <tr>
            <th>Auteur</th>
            <th>Titre</th>
        </tr>

        <?php foreach ($this->books as $key => $val): ?>
        <tr>
            <td><?php echo $this->escape($val['auteur']) ?></td>
            <td><?php echo $this->escape($val['titre']) ?></td>
        </tr>
        <?php endforeach; ?>

    </table>

<?php else: ?>

    <p>Aucun livre à afficher</p>

<?php endif; ?>
        

Notez l'utilisation de la méthode escape pour échapper les variables à afficher.

Options

Zend_View possède plusieurs options qui peuvent être réglées pour changer le comportement de vos scripts de vues.

  • basePath : indique le chemin de base où peuvent être trouvés les dossiers de scripts, d'aides et de filtres. Il considère une structure de dossiers de ce type :

    chemin/vers/
        helpers/
        filters/
        scripts/
                    

    Ceci peut être paramètré via les méthodes setBasePath(), addBasePath(), ou l'option basePath du constructeur.

  • encoding : indique l'encodage de caractère à utiliser avec htmlentities(), htmlspecialchars(), et tout autre opération. La valeur par défaut est ISO-8859-1 (latin1). Il peut être paramètré avec la méthode setEncoding() ou l'option encoding du constructeur.

  • escape : indique le callback que doit utiliser escape(). Ceci pet être paramètré avec la méthode setEscape() ou l'option escape du constructeur.

  • filter : indique un filtre à utiliser avant d'effectuer le rendu d'un script de vue. Ceci peut être paramètré avec les méthodes setFilter(), addFilter(), ou l'option filter du constructeur.

  • strictVars : force Zend_View à émettre des "notices" et des "warnings" quand des variables non initialisées sont lues. Ceci peut être activé en appelant strictVars(true) ou en passant l'option strictVars au constructeur.

Accesseurs utiles

Typiquement, vous ne devriez seulement avoir besoin d'appeler les méthodes assign(), render(), ou une des méthodes pour le paramétrage/l'ajout de chemins de filtre, d'aide et de script de vues. Cependant, si vous souhaitez étendre Zend_View vous-même, ou avez besoin d'accéder à quelques unes de ces méthodes internes, un certain nombre d'accesseurs existent :

  • getVars() retournera toutes les variables assignées.

  • clearVars() effacera toutes les variables assignées ; utile si vous souhaitez ré-utiliser un objet de vue, ou contrôler les variables qui sont disponibles.

  • getScriptPath($script) récupèrera le chemin résolu vers un script donné..

  • getScriptPaths() récupèrera tous les chemins vers les scripts de vues enregistrés.

  • getHelperPath($helper) récupèrera le chemin résolu vers une classe d'aide nommée.

  • getHelperPaths() récupèrera tous les chemins vers les aides enregistrés.

  • getFilterPath($filter) récupèrera le chemin résolu vers une classe de filtre nommée.

  • getFilterPaths() récupèrera tous les chemins vers les filtres enregistrés.


Zend_View
blog comments powered by Disqus

Select a Version

Languages Available

Components

Search the Manual