Introduction au Zend Framework

 Apprendre Zend Framework

appendix

 Guide de référence Zend Framework


  •  Zend_Gdata
  •  Zend_Http
  •  Zend_InfoCard
  •  Zend_Json
  •  Zend_Layout
  •  Zend_Ldap
  •  Zend_Loader
  •  Zend_Locale
  •  Zend_Log
  •  Zend_Mail
  •  Zend_Markup
  •  Zend_Measure
  •  Zend_Memory
  •  Zend_Mime
  •  Zend_Navigation
  •  Zend_Oauth
  •  Zend_OpenId
  •  Zend_Paginator
  •  Zend_Pdf
  •  Zend_ProgressBar
  •  Zend_Queue
  •  Zend_Reflection
  •  Zend_Registry
  •  Zend_Rest

  •  Zend_Search_Lucene
  •  Zend_Serializer
  •  Zend_Server
  •  Zend_Service
  •  Zend_Session
  •  Zend_Soap
  •  Zend_Tag
  •  Zend_Test
  •  Zend_Text
  •  Zend_TimeSync
  •  Zend_Tool
  •  Zend_Tool_Framework
  •  Zend_Tool_Project
  •  Zend_Translate
  •  Zend_Uri
  •  Zend_Validate
  •  Zend_Version
  •  Zend_View
  •  Zend_Wildfire
  •  Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 61.2% Update 2010-11-28 - Revision 23149 - Version ZF 1.11.x

    Chapitre 77. Zend_View

    Table des matières

    77.1. Introduction
    77.1.1. Script du Contrôleur
    77.1.2. Script de vue
    77.1.3. Options
    77.1.4. Balises courtes dans les scripts de vue
    77.1.5. Accesseurs utiles
    77.2. Scripts de contrôleur
    77.2.1. Assigner des variables
    77.2.2. Effectuer le rendu d'un script de vue
    77.2.3. Chemin des scripts de vue
    77.3. Scripts de vue
    77.3.1. Échapper la sortie
    77.3.2. Utiliser des systèmes de gabarit (template) alternatifs
    77.3.2.1. Système de gabarit utilisant les scripts de vues
    77.3.2.2. Système de gabarit utilisant Zend_View_Interface
    77.4. Aides de vue
    77.4.1. Aides initiales
    77.4.1.1. L'aide de vue Action
    77.4.1.2. Aide BaseUrl
    77.4.1.3. Aide Currency
    77.4.1.4. Aide Cycle
    77.4.1.5. L'aide de vue Partial
    77.4.1.6. L'aide de vue Placeholder
    77.4.1.6.1. Implémentation concrète des Placeholder
    77.4.1.7. L'aide de vue Doctype
    77.4.1.8. L'aide de vue HeadLink
    77.4.1.9. L'aide de vue HeadMeta
    77.4.1.10. L'aide de vue HeadScript
    77.4.1.11. L'aide de vue HeadStyle
    77.4.1.12. L'aide de vue HeadTitle
    77.4.1.13. L'aide de vue HTML Object
    77.4.1.14. L'aide de vue InlineScript
    77.4.1.15. L'aide de vue JSON
    77.4.1.16. Navigation Helpers
    77.4.1.16.1. Translation of labels and titles
    77.4.1.16.2. Integration with ACL
    77.4.1.16.3. Navigation setup used in examples
    77.4.1.16.4. Breadcrumbs Helper
    77.4.1.16.5. Links Helper
    77.4.1.16.6. Menu Helper
    77.4.1.16.7. Sitemap Helper
    77.4.1.16.8. Navigation Helper
    77.4.1.17. L'aide de vue Translate
    77.4.2. Chemin des aides
    77.4.3. Écrire des aides personnalisées
    77.4.4. Registering Concrete Helpers
    77.5. Zend_View_Abstract

    77.1. 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.

    77.1.1. 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 :

    // 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');

    77.1.2. 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.

    77.1.3. 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.

    77.1.4. Balises courtes dans les scripts de vue

    Dans nos exemples et notre documentation, nous utilisons les balises longues PHP : <?php. De plus, nous utilisons parfois la syntaxe alternative des structures de contrôle. Ce sont des éléments pratiques à utiliser lors de la rédaction de vos scripts de vue, car elles rendent les constructions plus laconiques, maintiennent les instructions sur des lignes uniques et éliminent la chasse aux accolades à l'intérieur de l'HTML.

    Dans les versions précédentes, nous recommandions souvent l'utilisation des balises courtes (<? et <?=), car elles rendent les scripts de vues moins verbeux. Cependant, la valeur par défaut du fichier php.ini pour le réglage short_open_tag est désactivé par défaut en production ou en hébergement mutualisé ; rendant ainsi vos scripts peu portables. De plus, si vous modélisez du XML dans vos scripts, la présence des balises courtes entrainera l'échec de la validation. Enfin, si vous utilisez les balises courtes et que short_open_tag est désactivé, le script retournera soit des erreurs, soit votre code PHP à l'utilisateur.

    Ceci étant dit, de nombreux développeurs préfère utiliser la forme complète pour des questions de validation ou de portabilité. Par exemple, short_open_tag est désactivé dans le php.ini.recommended, et si vous avez du XML dans vos scripts de vue, alors les balises courtes entraîneront un échec de validation du modèle.

    De plus, si vous utilisez les balises courtes avec un réglage du paramètre à "off", alors les scripts de vue vont soit entraîner des erreurs, soit simplement afficher le code à l'utilisateur.

    Si malgré ces avertissements, vous souhaitez utiliser les balises courtes mais qu'elles sont désactivées, vous avez deux options :

    • Activer les dans votre fichier .htaccess :

      php_value "short_open_tag" "on"

      Ceci est seulement possible si vous êtes autorisé à créer et utiliser les fichiers .htaccess. Cette directive peut aussi être ajoutée à votre fichier httpd.conf.

    • Activer une enveloppe de flux ("stream wrapper") optionnelle pour convertir les balises courtes en balises longues à la volée :

      $view->setUseStreamWrapper(true);

      Ceci enregistre Zend_View_Stream en tant que enveloppe de flux pour les scripts de vue, et permet de s'assurer que votre code continue à fonctionner comme si les balises courtes étaient activées.

    [Avertissement] Les enveloppes de flux de vue dégradent les performances

    L'utilisation d'enveloppe de flux dégradera les performances de votre application, bien que les tests de performance réels sont indisponibles pour quantifier le niveau de dégradation. Nous recommandons donc soit d'activer les balises courtes, soit de convertir vos scripts pour utiliser la forme longue, ou d'avoir une bonne stratégie de mise en cache partielle ou totale du contenu de vos pages.

    77.1.5. 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.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...