| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.layout.intro">
- <title>Introduction</title>
- <para>
- Dans une application utilisant les couches Zend Framework <acronym>MVC</acronym>,
- vos scripts de vue ne seront que des blocs de <acronym>HTML</acronym> concernant
- l'action demandée. Par exemple, une action "<filename>/user/list</filename>"
- mènerait vers un script de vue itérant sur les utilisateurs en présentant une liste:
- </para>
- <programlisting language="php"><![CDATA[
- <h2>Utilisateurs</h2>
- <ul>
- <?php if (!count($this->users)): ?>
- <li>Pas d'utilisateurs</li>
- <?php else: ?>
- <?php foreach ($this->users as $user): ?>
- <li>
- <?php echo $this->escape($user->fullname) ?>
- (<?php echo $this->escape($user->email) ?>)
- </li>
- <?php endforeach ?>
- <?php endif ?>
- </ul>
- ]]></programlisting>
- <para>
- Comme c'est juste un bloc de code <acronym>HTML</acronym>, ce n'est pas une page valide,
- il manque le <acronym>DOCTYPE</acronym> et la balise ouvrante <acronym>HTML</acronym> puis
- <acronym>BODY</acronym>. Quand seront-ils crées?
- </para>
- <para>
- Dans les anciennes versions de Zend Framework, les développeurs créaient souvent des scripts
- de vue "header" et "footer" qui servaient à cela. Ca fonctionnait certes, mais c'était
- difficile à refactoriser, ou pour appeler du contenu provenant de plusieurs actions.
- </para>
- <para>
- Le pattern
- <ulink url="http://martinfowler.com/eaaCatalog/twoStepView.html">Two-Step View</ulink>
- solutionne beaucoup des problèmes indiqués. Avec, la vue "application" est crée en premier,
- puis injectée dans une vue "page" ainsi présentée à l'utilisateur client. la vue de page
- peut être imaginée comme un template global ou layout qui décrirait des éléments communs
- utilisés au travers de multiples pages.
- </para>
- <para>
- Dans Zend Framework, <classname>Zend_Layout</classname> implémente le pattern Two-Step View.
- </para>
- </sect1>
|