layout-intro.xml 2.1 KB

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